禁用复选框列表时,item.Selected为false。

时间:2016-10-10 12:39:54

标签: c# asp.net

我有一个复选框列表,其中某些用户禁用了某些项目。

enter image description here

当我点击'保存'时,会执行以下代码。

 foreach (ListItem item in myCheckBoxList.Items)
 {
    if (!item.Selected)
            {
                continue;
            }
    selectedValues.Add(item.Value);
  }  

但是,即使已选中,item.Selected也会对已禁用的项目评估为false。

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:3)

禁用的输入永远不会发布到服务器,因此它将被设置为默认值,即false。您可以使用HiddenField并将其与每个复选框关联,并根据其选择设置值。

答案 1 :(得分:1)

如果使用aspnet添加了CheckBoxList的ListItems,无论是在代码隐藏还是.aspx页面,ViewState将确保它会将这些禁用的复选框视为已选中,即使它们未发送到服务器

    protected void Button1_Click(object sender, EventArgs e)
    {
        List<string> selectedValues = new List<string>();
        Label1.Text = "";
        foreach (ListItem item in myCheckBoxList.Items)
        {
            if (item.Selected)
            {
                selectedValues.Add(item.Value);
                Label1.Text += item.Value + "<br>";
            }
        }
    }

并使示例完成:

    <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
    <br /><br />
    <asp:CheckBoxList ID="myCheckBoxList" runat="server">
        <asp:ListItem Text="Blueberry" Value="Blueberry"></asp:ListItem>
        <asp:ListItem Text="Raspberry" Value="Raspberry"></asp:ListItem>
        <asp:ListItem Text="Blackberry" Value="Blackberry"></asp:ListItem>
        <asp:ListItem Text="Strawberry" Value="Strawberry" Enabled="false" Selected="True"></asp:ListItem>
        <asp:ListItem Text="Gooseberry" Value="Gooseberry" Enabled="false" Selected="True"></asp:ListItem>
    </asp:CheckBoxList>
    <br /><br />
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />