从2中选择1个复选框

时间:2017-04-14 03:38:37

标签: c# asp.net

我有几个复选框,但我只想要文本“New Desktop”和“New Laptop”只能选择2中的1个。我希望它可以在C#中完成。

<asp:CheckBoxList ID="Service1" runat="server" 
                     Width="251px" >
                 <%--onselectedindexchanged="checkBox1_CheckedChanged"--%>
                    <asp:ListItem text="New Login ID & Email Address" ></asp:ListItem>
                    <asp:ListItem text="New Desktop" Value="2" oncheckedchanged="checkBox1_CheckedChanged" ></asp:ListItem>
                    <asp:ListItem text="New Notebook" Value="3" oncheckedchanged="checkBox2_CheckedChanged"></asp:ListItem>
                    <asp:ListItem text="New Mouse"></asp:ListItem>
                    <asp:ListItem text="New Keyboard"></asp:ListItem>
                    <asp:ListItem text="New Printer"></asp:ListItem>
                </asp:CheckBoxList>


//.cs pages
protected void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (Service1.Items[2].Selected == true)
            {
                Service1.Items[3].Enabled = false;
            }
        }
protected void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            if (Service1.Items[3].Selected == true)
            {
                Service1.Items[2].Enabled = false;
            }
        }

2 个答案:

答案 0 :(得分:1)

我在下面举一个例子,但这可能不是一个可行的方法。您需要将CheckedChanged事件添加到每个CheckBox以从其他CheckBox中删除检查

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{  
     if(CheckBox1.Checked)
     {
          CheckBox2.Checked =false;
          CheckBox3.Checked =false;
          CheckBox4.Checked =false;
      }
}

你应该为CheckBox2,CheckBox3等重复上面的evevt。您可以根据自己的要求进行扩展。

但在这种情况下,我建议您使用ASP.NET Radio Button Control。有关单选按钮控制的详细信息,请参阅this link

答案 1 :(得分:1)

您可以将OnSelectedIndexChanged事件用于CheckBoxList并使用AutoPostBack =“True”,以便您的控件向服务器发送请求并选择chenged事件将被调用 即:设计

<asp:CheckBoxList ID="Service1" runat="server" Width="251px" AutoPostBack="True" OnSelectedIndexChanged="Service1_SelectedIndexChanged">
        <asp:ListItem Text="New Login ID & Email Address"></asp:ListItem>
        <asp:ListItem Text="New Desktop" Value="2"></asp:ListItem>
        <asp:ListItem Text="New Notebook" Value="3" ></asp:ListItem>
        <asp:ListItem Text="New Mouse"></asp:ListItem>
        <asp:ListItem Text="New Keyboard"></asp:ListItem>
        <asp:ListItem Text="New Printer"></asp:ListItem>
    </asp:CheckBoxList>

并且在代码中:'li'包含所有选定的项目,根据您的要求,“新桌面”和“新笔记本电脑”仅选择2中的1个。

protected void Service1_SelectedIndexChanged(object sender, EventArgs e)
        {
            CheckBoxList li = (CheckBoxList)sender;
            foreach (ListItem l in li.Items)
            {
                if (l.Value == "2")
                {
                    if (l.Selected)
                    {
                        Service1.Items[2].Enabled = false;
                    }
                    else
                    {
                        Service1.Items[2].Enabled = true;
                    }

                }
                else if (l.Value == "3")
                {
                    if (l.Selected)
                    {
                        Service1.Items[1].Enabled = false;
                    }
                    else
                    {
                        Service1.Items[1].Enabled = true;
                    }
                }
            }
        }