2

我基本上想实现 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。

4

2 回答 2

4

您不需要服务器端事件来实现这一点。使用单选按钮的 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" />
于 2012-05-11T06:54:00.780 回答
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;
    }
于 2012-05-11T06:56:36.673 回答