Click here to Skip to main content
15,896,154 members
Articles / Web Development / ASP.NET

Creating a chained dropdownlist using AJAX and XML

Rate me:
Please Sign up or sign in to vote.
4.44/5 (17 votes)
26 Mar 2010CPOL5 min read 40K   681   17  
This article is about to create a chained dropdownlist when we need to represent data from hierarchical data sets. Here I’ll be discussing the method to populate ASPX dropdownlists using partial page rendering with AJAX. My database is a simple XML data file.
using System;
using System.Data;

public partial class _Default : System.Web.UI.Page 
{
    DataSet ds = new DataSet();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Cache["Motos"] == null)
        {
            ds.ReadXml(Server.MapPath("~/XMLFiles/Motors.xml"), XmlReadMode.InferSchema);
            Cache.Insert("Motos", ds);
        }
        else
            ds = (DataSet)Cache["Motos"];
    }

    protected void drpMain_SelectedIndexChanged(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(1200);

        if (drpMain.SelectedValue == "0")
        {
            drpMoto.Items.Clear();
            drpBrand.Items.Clear();
            drpMoto.Enabled = false;
            drpBrand.Enabled = false;
            btnGo.Enabled = false;
        }
        else if (drpMain.SelectedValue == "1")
        {
            drpMoto.DataTextField = "mcname";
            drpMoto.DataValueField = "mcid";
            drpMoto.DataSource = ds.Tables["motoc"];
            drpMoto.DataBind();
            drpMoto.Enabled = true;
            drpBrand.Items.Clear();
            drpBrand.Enabled = false;
            btnGo.Enabled = false;
        }
        else if (drpMain.SelectedValue == "2")
        {
            drpMoto.DataTextField = "mbname";
            drpMoto.DataValueField = "mbid";
            drpMoto.DataSource = ds.Tables["motob"];
            drpMoto.DataBind();
            drpMoto.Enabled = true;
            drpBrand.Items.Clear();
            drpBrand.Enabled = false;
            btnGo.Enabled = false;
        }
    }

    protected void drpMoto_SelectedIndexChanged(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(1200);

        if (drpMoto.SelectedItem.Value == "0")
        {
            drpBrand.Items.Clear();
            drpBrand.Enabled = false;
            btnGo.Enabled = false;
        }
        else if (drpMain.SelectedValue == "1" && drpMoto.SelectedItem.Value != "0")
        {
            DataView dView = new DataView(ds.Tables["motocb"]);
            dView.RowFilter = "mcid='" + drpMoto.SelectedValue.Trim() + "'";
            dView.Sort = "mcbname asc";
            drpBrand.DataTextField = "mcbname";
            drpBrand.DataValueField = "mcbid";
            drpBrand.DataSource = dView;
            drpBrand.DataBind();
            drpBrand.Enabled = true;
            btnGo.Enabled = true;
        }
        else if (drpMain.SelectedValue == "2" && drpMoto.SelectedItem.Value != "0")
        {
            DataView dView = new DataView(ds.Tables["motobb"]);
            dView.RowFilter = "mbid='" + drpMoto.SelectedValue.Trim() + "'";
            dView.Sort = "mbbname asc";
            drpBrand.DataTextField = "mbbname";
            drpBrand.DataValueField = "mbbid";
            drpBrand.DataSource = dView;
            drpBrand.DataBind();
            drpBrand.Enabled = true;
            btnGo.Enabled = true;
        }
    }

    protected void btnGo_OnClick(object sender, EventArgs e)
    {
        lblResult.Text = "Searched for: <b>" + drpBrand.SelectedItem.Text.Replace("(","").Replace(")","") + " " + drpMoto.SelectedItem.Text + " " + drpMain.SelectedItem.Text.Replace("s","") + "(s)</b>";
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Technical Lead Cherisys Technologies
India India
Senior Software Professional with 13+ years of experience in web/desktop applications development.

Comments and Discussions