从另一个单选按钮“CheckedChanged”事件中取消选择其他单选按钮

时间:2012-05-11 06:48:07

标签: c# asp.net radio-button web-controls

我基本上想要实现RadioButtonList的功能,而不使用该控件(即保持单选按钮分开)。所以我将两个常规的RadioButton(非列表)控件拖到页面中。两个单选按钮都设置为AutoPostback = true。

我尝试使用以下两个事件处理程序:

protected void radio1_CheckedChanged(object sender, EventArgs e)
{
    radio2.Checked = false;
}

protected void radio2_CheckedChanged(object sender, EventArgs e)
{
    radio1.Checked = false;
}

所以我期望的是,如果用户点击了radio1,则radio2应该取消选中。这不会发生。没有任何错误或任何错误。我走过去发现,确实在选择其中一个单选按钮时,事件就会发生。并且它将另一个单选按钮的.Checked状态更改为false。但是,在页面上可视化,仍然会检查两个单选按钮。 (看起来像回发问题,我知道,但事实并非如此)。


我无法使用RadioButtonList控件的原因是,鉴于页面上的其他选项,我需要禁用某些单选按钮选项。例如,在下拉列表中选择项目A会禁用radio1,因此它甚至不是一个选择,但是再次选择项目B会重新启用radio1,并禁用radio2。

2 个答案:

答案 0 :(得分:4)

您不需要服务器端事件来实现此目的。 使用radiobutton的GroupName属性并将所有单选按钮保留在同一groupName下 喜欢 -

<asp:RadioButton ID="RadioButton1"  GroupName = "a" runat="server" />
<asp:RadioButton ID="RadioButton2" GroupName = "a" runat="server" />
<asp:RadioButton ID="RadioButton3" GroupName = "a"  runat="server" />

答案 1 :(得分:0)

我只是检查是否检查了其他单选按钮并且它是否正常工作

 private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton1.Checked)
        radioButton2.Checked = false;
    }

    private void radioButton2_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton2.Checked)
        radioButton1.Checked = false;
    }