我有5个CheckBoxList控件以及IDCheckBoxList1等的CheckBoxList2。它们中有相同的列表项。

现在,当我写以下行时:

CheckBoxList1.Items[0].Selected = true;


它选择CheckBoxList1的第一项,但同时选择所有其他CheckBoxList的第一项。知道为什么会发生这样的神秘事件吗?

所有CheckBoxList具有相同数量的项目,每个项目具有相同的文本和相同的值。

它们是从数据库中获取的数据动态填充的。

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);
}

最佳答案

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

我猜您正在向每个列表添加相同的对象。因此,对任何对象的任何修改都会影响所有列表。



使用以下语句:

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

10-08 18:35