asp.net DropDownList 三级联动下拉菜单实现代码

复制代码 代码如下:

  if (!IsPostBack)

  {

  //一级分类列表

  this.DropDownList1.DataSource = dsbb.SelectSubjct1();

  this.DropDownList1.DataTextField = "cName";

  this.DropDownList1.DataValueField = "Ccode";

  this.DropDownList1.DataBind();

  this.DropDownList1.Items.Insert(0,new ListItem("请选择一级分类","0"));

  this.DropDownList8.Items.Insert(0, new ListItem("请选择二级分类", "0"));

  this.DropDownList9.Items.Insert(0,new ListItem ("请选择三级分类","0"));

  //二级分类列表

  }

  /// <summary>

  /// 绑定二级分类

  /// </summary>

  /// <param name="sender"></param>

  /// <param name="e"></param>

  protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)

  {

  libs.Database.Dbbase dbb = new libs.Database.Dbbase();

  if (Convert.ToInt32(this.DropDownList1.SelectedValue) == 0) //清除列表内容

  {

  this.DropDownList8.Items.Clear();

  this.DropDownList8.Items.Insert(0, new ListItem("请选择二级分类", "0"));

  this.DropDownList9.Items.Clear();

  this.DropDownList9.Items.Insert(0, new ListItem("请选择三级分类", "0"));

  }

  else //二级分类列表

  {

  this.DropDownList8.DataSource = dbb.Selectsubjct2(this.DropDownList1.SelectedValue.Substring(0,2));

  this.DropDownList8.DataTextField = "cName";

  this.DropDownList8.DataValueField = "Ccode";

  this.DropDownList8.DataBind();

  this.DropDownList8.Items.Insert(0,new ListItem ("请选择二级分类","0"));

  this.DropDownList9.Items.Clear();//清除第三分类

  this.DropDownList9.Items.Insert(0, new ListItem("请选择三级分类", "0"));

  }

  }

  /// <summary>

  /// 绑定三级分类

  /// </summary>

  /// <param name="sender"></param>

  /// <param name="e"></param>

  protected void DropDownList8_SelectedIndexChanged(object sender, EventArgs e)

  {

  libs.Database.Dbbase dbase = new libs.Database.Dbbase();

  this.DropDownList9.DataSource = dbase.selectsubject3(this.DropDownList8.SelectedValue.Substring(0,4));

  this.DropDownList9.DataTextField = "cName";

  this.DropDownList9.DataValueField = "Ccode";

  this.DropDownList9.DataBind();

  this.DropDownList9.Items.Insert(0,new ListItem("请选择三级分类","0"));

  }

  Dbbase.cs页:

  

复制代码 代码如下:

  /// <summary>

  /// 查询一级栏目

  /// </summary>

  /// <returns></returns>

  public DataSet SelectSubjct1()

  {

  string con = System.Configuration.ConfigurationSettings.AppSettings["sqlconn"];

  SqlConnection conn = new SqlConnection(con);

  string sqlstr = "SELECT kndid, Ccode, cName, cLevel FROM kind WHERE cLevel = 1";

  DataSet dst = new DataSet();

  SqlDataAdapter sda = new SqlDataAdapter(sqlstr,conn);

  try

  {

  sda.Fill(dst);

  return dst;

  }

  catch (Exception ex)

  {

  throw new Exception(ex.Message);

  }

  finally

  {

  conn.Close();

  }

  }

  /// <summary>

  /// 查询二级栏目内容

  /// </summary>

  /// <param name="ccode"></param>

  /// <returns></returns>

  public DataSet Selectsubjct2(string ccode)

  {

  string conn1 = System.Configuration.ConfigurationSettings.AppSettings["sqlconn"];

  SqlConnection conn = new SqlConnection(conn1);

  string sqqq = "select kndid,Ccode,cName,cLevel from kind where cLevel = 2 and Ccode like '" + ccode + "%'";

  DataSet dss = new DataSet();

  SqlDataAdapter sdd = new SqlDataAdapter(sqqq,conn);

  try

  {

  sdd.Fill(dss);

  return dss;

  }

  catch (Exception ex)

  {

  throw new Exception(ex.Message);

  }

  finally

  {

  conn.Close();

  }

  }

  /// <summary>

  /// 查询三级栏目内容

  /// </summary>

  /// <param name="cde"></param>

  /// <returns></returns>

  public DataSet selectsubject3(string cde)

  {

  string conn2 = System.Configuration.ConfigurationSettings.AppSettings["sqlconn"];

  SqlConnection conn = new SqlConnection(conn2);

  string sqq = "select kndid,Ccode,cName,cLevel from kind where cLevel = 3 and Ccode like '" + cde + "%'";

  DataSet dst = new DataSet();

  SqlDataAdapter sdaa = new SqlDataAdapter(sqq,conn);

  try

  {

  sdaa.Fill(dst);

  return dst;

  }

  catch (Exception ex)

  {

  throw new Exception(ex.Message);

  }

  finally

  {

  conn.Close();

  }

  }

  注意:DropDownList1_SelectedIndexChanged 事件,AutoPostBack="True"