【问题标题】:De-selecting other radio buttons from another radio button's "CheckedChanged" event从另一个单选按钮的“CheckedChanged”事件中取消选择其他单选按钮
【发布时间】:2012-05-19 18:37:14
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您不需要服务器端事件来实现这一点。 使用单选按钮的 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" />
    

    【讨论】:

    • ...我现在觉得自己很愚蠢,哈哈。惊人的! +为您赢得声誉!
    【解决方案2】:

    我只是添加一个检查是否选中了另一个单选按钮并且它可以工作

     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;
        }
    

    【讨论】:

      猜你喜欢
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多