复选框列表问题

时间:2011-04-20 10:36:45

标签: c# asp.net checkbox checkboxlist

我有5 CheckBoxListID CheckBoxList1 CheckBoxList2CheckBoxList1.Items[0].Selected = true; 的控件,依此类推。它们中包含相同的列表项。

现在我写下以下一行:

CheckBoxList1

它选择CheckBoxList的第1项,但所有其他CheckBoxList的第1项也会被选中。知道为什么会发生这么神秘的事情吗?

所有SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM EMPLOYEE_TABLE WHERE EMPLOYEE_TABLE.EmployeeID NOT IN (SELECT ORG_UNIT.ManagerID FROM ORG_UNIT WHERE ORG_UNIT.OrgUnitID = '" + teamid + "') AND EMPLOYEE_TABLE.OrgUnitID = '" + teamid + "'",con); DataSet da = new DataSet(); DataTable table = new DataTable(); adapter.Fill(table); adapter.Fill(da); int count = da.Tables[0].Rows.Count; CheckBoxList1.Items.Clear(); CheckBoxList2.Items.Clear(); CheckBoxList3.Items.Clear(); CheckBoxList4.Items.Clear(); CheckBoxList5.Items.Clear(); no_of_listitem = count; for (int i = 0; i < table.Rows.Count; i++) { ListItem temp = new ListItem(); temp.Text = table.Rows[i]["FName"].ToString(); employeeid[i] = table.Rows[i]["EmployeeID"].ToString(); temp.Value = i.ToString(); CheckBoxList1.Items.Add(temp); CheckBoxList2.Items.Add(temp); CheckBoxList3.Items.Add(temp); CheckBoxList4.Items.Add(temp); CheckBoxList5.Items.Add(temp); } 的项目数相同,每个项目的文本相同,价值相同。

动态填充它们,并从数据库中提取数据。

{{1}}

3 个答案:

答案 0 :(得分:2)

这可能是因为你填充这些列表的方式......

我猜你要为每个列表添加相同的对象。因此,对任何对象的任何修改都会影响所有列表..


使用以下语句:

    CheckBoxList.Items.Add(New ListItem(table.Rows[i]["FName"].ToString(), 
table.Rows[i]["EmployeeID"].ToString())); 

答案 1 :(得分:1)

Akram是正确的 - 所有CheckBoxList不仅包含外观相同的项目,而且 中的每一项都相同。因此,为了直接回答您的问题,您需要为每个new ListItem添加CheckBoxList,例如:

for (int i = 0; i < table.Rows.Count; i++)
{
    var firstName = table.Rows[i]["FName"].ToString()
    var employeeId = table.Rows[i]["EmployeeID"].ToString();

    CheckBoxList1.Items.Add(new ListItem { Text = firstName, Value = employeeId });
    CheckBoxList2.Items.Add(new ListItem { Text = firstName, Value = employeeId });
    CheckBoxList3.Items.Add(new ListItem { Text = firstName, Value = employeeId });
    CheckBoxList4.Items.Add(new ListItem { Text = firstName, Value = employeeId });
    CheckBoxList5.Items.Add(new ListItem { Text = firstName, Value = employeeId });
}

答案 2 :(得分:1)

for (int i = 0; i < table.Rows.Count; i++)
{
    ListItem temp = new ListItem();
    temp.Text = table.Rows[i]["FName"].ToString();
    employeeid[i] = table.Rows[i]["EmployeeID"].ToString();
    temp.Value = i.ToString();
    CheckBoxList1.Items.Add(temp);

    ListItem temp = new ListItem();
    temp.Text = table.Rows[i]["FName"].ToString();
    employeeid[i] = table.Rows[i]["EmployeeID"].ToString();
    temp.Value = i.ToString();
    CheckBoxList2.Items.Add(temp);

    ListItem temp = new ListItem();
    temp.Text = table.Rows[i]["FName"].ToString();
    employeeid[i] = table.Rows[i]["EmployeeID"].ToString();
    temp.Value = i.ToString();
    CheckBoxList3.Items.Add(temp);

    ListItem temp = new ListItem();
    temp.Text = table.Rows[i]["FName"].ToString();
    employeeid[i] = table.Rows[i]["EmployeeID"].ToString();
    temp.Value = i.ToString();
    CheckBoxList4.Items.Add(temp);

    ListItem temp = new ListItem();
    temp.Text = table.Rows[i]["FName"].ToString();
    employeeid[i] = table.Rows[i]["EmployeeID"].ToString();
    temp.Value = i.ToString();
    CheckBoxList5.Items.Add(temp);
}