日期:2014-05-20  浏览次数:20871 次

多个Checkboxlist级联
现在有这么一个问题,想实现三个复选框级联的问题。
第一个复选框的内容从数据库中读出
    DataSet   ds1   =   UcfarDB.Create( "nbpttest ").ExecuteDataSet( "select   bmmc,idid   from   TBL_DB_DM_BMDM   where   jcjc   =   '1 ' ");
    this.CheckBoxList1.DataSource   =   ds1.Tables[0].DefaultView;
    this.CheckBoxList1.DataTextField   =   "bmmc ";
    this.CheckBoxList1.DataValueField   =   "idid ";
    this.CheckBoxList1.DataBind();
我想问的是第二个复选框如何根据第一个复选框的选择进行数据的绑定
protected   void   CheckBoxList1_SelectedIndexChanged(object   sender,   EventArgs   e)
        {
                string   selval   =   " ";
                for   (int   i   =   0;   i   <   CheckBoxList1.Items.Count;   i++)
                {
                        if(CheckBoxList1.Items[i].Selected)
                        {
                                selval   =   CheckBoxList1.Items[i].Value;
         
                                DataSet   ds   =   UcfarDB.Create( "nbpttest ").ExecuteDataSet( "select   bmmc,idid   from   TBL_DB_DM_BMDM   where   jcjc= '2 '   and   pidid= ' "   +   selval   +   " ' ");
                                CheckBoxList2.DataSource   =   ds;
                                CheckBoxList2.DataTextField   =   "bmmc ";
                                CheckBoxList2.DataValueField   =   "idid ";
                                CheckBoxList2.DataBind();
                        }
                }        
        }
第一个复选框是选择部门,第二个是选择相对应的科队,我这里有错误,单选一个部门后,能正常关联它对应的科队,在选择第二个部门时,第一个选择的部门所对应的科队被挤掉了,貌似是根据selval重新绑定了,希望高手指点,实现在进行部门选择时,选了一个部门,它对应的科队就显示,再选第二个,科队复选框里多出第二个部门对应的科队。还有AutoPostBack是要在后台写么?因为貌似前台写了选一个部门就刷新一次。
最终要实现的目标就是,部门复选框开始就读数据库显示所有可选部门,然后通过部门选择在科队复选框里出现对应科队,最后通过点选科队复选框关联出相应人员复选框。
请各位高手不吝赐教,在此谢过!

------解决方案--------------------
正确的写法



C# code
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
  String selval = "";
  CheckBoxList2.Items.Clear();
  CheckBoxList2.AppendDataBoundItems = true;
  for (int i = 0; i < CheckBoxList1.Items.Count; i++)
  {
    if (CheckBoxList1.Items[i].Selected)
    {       
      selval = CheckBoxList1.Items[i].Value;
      DataSet ds = UcfarDB.Create("nbpttest ").ExecuteDataSet("select bmmc,idid from TBL_DB_DM_BMDM where jcjc= '2' and pidid= '" + selval + "'");
      CheckBoxList2.DataSource = ds;
      CheckBoxList2.DataTextField = "bmmc";
      CheckBoxList2.DataValueField = "idid";
      CheckBoxList2.DataBind();
    }
  }