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

DropDownList with OptionGroup

Rate me:
Please Sign up or sign in to vote.
4.79/5 (24 votes)
19 Jun 2008CPOL3 min read 97.7K   1.6K   40  
An ASP.NET DropDownList custom control with the HTML OptionGroup feature.
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using OptionDropDownList;

namespace TestWebApplication
{
  public partial class Default : System.Web.UI.Page
  {
    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Page_Load(object sender, EventArgs e)
    {
      this.DropDownList1.DataTextField = "letter";
      this.DropDownList1.DataValueField = "id";
      this.DropDownList1.DataSource = this.CreateDataSource();
      this.DropDownList1.DataBind();
      this.OptionGroupSelect1.DataTextField = "letter";
      this.OptionGroupSelect1.DataValueField = "id";
      this.OptionGroupSelect1.OptionGroupField = "letters";
      this.OptionGroupSelect1.DataSource = this.CreateDataSource();
      this.OptionGroupSelect1.DataBind();


      this.DropDownList2.DataTextField = "letter";
      this.DropDownList2.DataValueField = "id";
      this.DropDownList2.DataSource = this.CreateDataSource();
      this.DropDownList2.DataBind();
      this.OptionGroupSelect2.DataTextField = "letter";
      this.OptionGroupSelect2.DataValueField = "id";
      this.OptionGroupSelect2.OptionGroupField = "letters";
      this.OptionGroupSelect2.DataSource = this.CreateDataSource();
      this.OptionGroupSelect2.DataBind();


      this.DropDownList3.DataTextField = "letter";
      this.DropDownList3.DataValueField = "id";
      this.DropDownList3.DataSource = this.CreateDataSource();
      this.DropDownList3.DataBind();
      this.OptionGroupSelect3.DataTextField = "letter";
      this.OptionGroupSelect3.DataValueField = "id";
      this.OptionGroupSelect3.OptionGroupField = "letters";
      this.OptionGroupSelect3.DataSource = this.CreateDataSource();
      this.OptionGroupSelect3.DataBind();


      if (!this.IsPostBack)
      {
        this.DropDownList5.DataTextField = "letter";
        this.DropDownList5.DataValueField = "id";
        this.DropDownList5.DataSource = this.CreateDataSource();
        this.DropDownList5.DataBind();
      }
      this.OptionGroupSelect5.DataTextField = "letter";
      this.OptionGroupSelect5.DataValueField = "id";
      this.OptionGroupSelect5.OptionGroupField = "letters";
      this.OptionGroupSelect5.DataSource = this.CreateDataSource();
      this.OptionGroupSelect5.DataBind();
    }

    /// <summary>
    /// 
    /// </summary>
    /// <returns></returns>
    private ICollection CreateDataSource()
    {
      DataTable dt = new DataTable();
      DataRow dr;

      dt.Columns.Add(new DataColumn("id", typeof(String)));
      dt.Columns.Add(new DataColumn("letter", typeof(String)));
      dt.Columns.Add(new DataColumn("letters", typeof(String)));

      dr = dt.NewRow();
      dr[0] = "A";
      dr[1] = "letter A";
      dr[2] = "letters";
      dt.Rows.Add(dr);

      dr = dt.NewRow();
      dr[0] = "B";
      dr[1] = "letter B";
      dr[2] = "letters";
      dt.Rows.Add(dr);

      dr = dt.NewRow();
      dr[0] = "C";
      dr[1] = "letter C";
      dr[2] = "letters";
      dt.Rows.Add(dr);

      dr = dt.NewRow();
      dr[0] = "D";
      dr[1] = "letter D";
      dr[2] = "letters";
      dt.Rows.Add(dr);

      dr = dt.NewRow();
      dr[0] = "E";
      dr[1] = "letter E";
      dr[2] = "letters";
      dt.Rows.Add(dr);

      DataView dv = new DataView(dt);
      return dv;
    }

    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void OptionGroupSelect_ValueChanged(object sender, EventArgs e)
    {
      this.textbox1.Text = "selected --> " + ((OptionGroupSelect)sender).SelectedItem.Text;
    }

    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void DropDownList_SelectedIndexChanged(object sender, EventArgs e)
    {
      this.textbox1.Text = "selected --> " + ((DropDownList)sender).SelectedItem.Text;
    }
  }
}

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)



Comments and Discussions