VS 2005中,在DataList的项模板中放一个CheckBoxList控件,
CheckBoxList绑定表中的一个字段。如果只想显示按条件查询出来的数据,而不是所有的数据。
应该怎么实现?各位高手,帮帮忙!

解决方案 »

  1.   

     没太明白你的意思。参考一下俺的代码吧
            for(int i = 0 ; i<GridView1.Rows.Count;i++)
            {
                GridViewRow dRow = GridView1.Rows[i];
                TextBox dText=(TextBox)dRow.FindControl("textBox1");
                
                int regID = Convert.ToInt32(GridView1.DataKeys[dRow.RowIndex].Value.ToString().Trim());//  '评委组别
                DataRow tempRow = tempDataTable.Rows[i];
                dText.Text = tempRow["组权重"].ToString().Trim();
                CheckBoxList dCheckList = (CheckBoxList)dRow.FindControl("CheckBoxList1");
                bindCheckList(dCheckList, groupID, regID);
            }
    private void bindCheckList( CheckBoxList cList , int groupID, int  regID)
        {
            cList.Items.Clear();
          
            //cnn = New SqlConnection(strCnn)
            //cnn.Open()
            cmd = new SqlCommand("select 员工ID,姓名 from 员工表 order by 姓名", cnn);
            dread = cmd.ExecuteReader();
            while (dread.Read())
            {
                ListItem pItem = new ListItem(dread[1].ToString().Trim(), dread[0].ToString().Trim());
                cList.Items.Add(pItem);
                pItem.Attributes.Add("onclick", "javascript:setchecked(this);");
            }
            cmd.Dispose();
            dread.Close();
            //显示选择结果
            
            string strSQL=string.Format("select 评委ID from 新评委表 where 考评组别={0} and 评委组别={1}",groupID,regID);
            cmd = new SqlCommand(strSQL, cnn);
            dread = cmd.ExecuteReader();
            while (dread.Read())
            {
                foreach(ListItem itmPro in cList.Items)
                {
                    if (itmPro.Value.ToString().Trim() == dread[0].ToString().Trim())
                    {
                        itmPro.Selected = true;
                        itmPro.Attributes.Add("Style", "background-color:#ff7b7b");
                    }
                }
            }        dread.Close();
            cmd.Dispose();
            //cnn.Close()
        }
      

  2.   

     private void TestBind()
        {
            DataTable tableAll = db.ExecuteDataset("SELECT roleID,roleName FROM role").Tables[0];
            DataTable tableCK = db.ExecuteDataset("SELECT roleID FROM role_group WHERE userID=1").Tables[0];
            for (int i = 0; i < tableAll.Rows.Count; i++)
            {
                ListItem newItem = new ListItem(tableAll.Rows[i]["roleName"].ToString(), tableAll.Rows[i]["roleID"].ToString());
                for (int j = 0; j < tableCK.Rows.Count; j++)
                {
                    if (newItem.Value == tableCK.Rows[j][0].ToString()) 
                    { 
                        newItem.Selected = true;
                        break;
                    }
                }
               CheckBoxListRole.Items.Add(newItem);
            }
        }
      

  3.   

    lz的意思是CheckBoxList绑定'所有的数据',但根据'查询出来的数据',显示CheckBox选中吧
      

  4.   

    大概思路,把每一项的style-display绑定到数据中的某列style='display:<%# (Eval("State").ToString()=="0")?" ":"none" %>'
      

  5.   

    CheckBoxListRole.Items.Add(newItem);这段代码中的CheckBoxListRole是从哪里来的?