为什么选中多个CheckBoxList中的值,即使我使用ID指定了一个

时间:2018-05-04 16:56:29

标签: c# asp.net checkboxlist

我正在生成三个单独的CheckBoxList

C#:

//...
foreach (DataRow dr in dt.Rows)
{
    ListItem li = new ListItem((string)dr["LD"], dr["ID"]+"");
    cl1.Items.Add(li);
    cl2.Items.Add(li);
    cl2.Items.Add(li);
}
//...
SelectCheckBoxList("76", cl2);


private void SelectCheckBoxList(string valueToSelect, CheckBoxList lst)
{
    ListItem listItem = lst.Items.FindByValue(valueToSelect);
    //ListItem listItem = lst.Items.FindByText(valueToSelect);
    if (listItem != null) listItem.Selected = true;
}

ASP.NET:

<asp:CheckBoxList ID="cl1" runat="server" RepeatDirection="Vertical" RepeatLayout="UnorderedList">
</asp:CheckBoxList>
<asp:CheckBoxList ID="cl2" runat="server" RepeatDirection="Vertical" RepeatLayout="UnorderedList">
</asp:CheckBoxList>
<asp:CheckBoxList ID="cl3" runat="server" RepeatDirection="Vertical" RepeatLayout="UnorderedList">
</asp:CheckBoxList>

由于它们都具有相同的值,但我只想要选择ID为CheckBoxList的{​​{1}}中的值。但是,所有三个cl2都选中了该项目。

我该如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

每个列表都会添加对同一ListItem的引用。请将ListItem的副本添加到每个列表中:

foreach (DataRow dr in dt.Rows)
{
    cl1.Items.Add(new ListItem((string)dr["LD"], dr["ID"]+""));
    cl2.Items.Add(new ListItem((string)dr["LD"], dr["ID"]+""));
    cl2.Items.Add(new ListItem((string)dr["LD"], dr["ID"]+""));
}