【问题标题】:If Else Statement not working ASP.NETIf Else 语句不起作用 ASP.NET
【发布时间】:2016-08-04 14:55:55
【问题描述】:

索引.aspx

 <asp:RadioButton ID="rbt1" runat="server" Text="By Customer" GroupName="summary" OnCheckedChanged="enabled_CheckedChanged" Checked="True"/>
 <asp:RadioButton ID="rbt4" runat="server" Text="With Target" OnCheckedChanged="enabled_CheckedChanged" GroupName="summary"/>

索引.aspx.cs

public void enabled_CheckedChanged(object sender, EventArgs e)
{
      if (rbt4.Checked == true)
      {
           rbt1.Checked = true;
      }
      else
      {
           rbt1.Checked = false;
      }
}

代码的目的是当检查rbt1时,检查rbt4。用户还可以在检查 rbt1 后检查 rbt4。但是,如果选中 rbt4,则会自动检查 rbt1。使用了上面的代码,但它似乎不起作用。我错过了什么还是我的编码有错误?请指教。提前致谢。

【问题讨论】:

  • 附带说明:rbt1.Checked = rbt4.Checked 没有 if 语句可以替换您的代码。我认为问题出在其他地方。
  • 我不清楚您的要求,因为您的解释似乎不一致。哪个复选框绑定到另一个? rbt1 是绑定的还是 rbt4。您的代码表明 rbt1 将绑定到 rbt4,但您的解释在某些部分表明其他情况。
  • 此外,您能否告诉我们究竟是什么不工作?页面加载时不起作用还是用户(您)手动选中复选框后不起作用?
  • "用户在检查 rbt 1 后也可以检查 rbt 4。"您将rtb4rtb1 都连接到同一个事件:enabled_CheckedChanged。所以当rtb4未被选中时,将不可能将rtb1设置为true
  • @CanIbanoglu rbt1 将绑定到 rbt4

标签: c# asp.net if-statement radio-button


【解决方案1】:

两个单选按钮具有相同的GroupName。一次只能检查其中一个。更改单选按钮的GroupName 属性以修复错误。为清楚起见,请参阅此link。还将 `AutoPostBack="true" 属性添加到单选按钮代码中。

【讨论】:

    【解决方案2】:

    您正在使用单选按钮并希望选择多个单选按钮,但单选按钮与相同的GroupName 是互斥的。您不能选择多个具有相同组的 RadioButton。您可能需要使用 CheckBox 来选择多个,或者为特殊情况提供不同的 GroupName 可能会解决问题,或者您可能需要将复选框与单选按钮或嵌套的 html 复选框组合。

    使用 GroupName 属性指定一组单选按钮以 创建一组互斥的控件。您可以使用 GroupName 从可用列表中只能选择一个时的属性 选项。设置此属性时,只有一个 RadioButton 在 可以一次选择指定的组,MSDN

    如果您想在复选框中建立某种关系,例如如果选择了一个,则应该选择其他的,仅此而已,那么您可以使用客户端脚本来节省不必要的 PostBacks 和流畅的用户体验。

    【讨论】:

    • 实际上有很多单选按钮供用户选择。我使用了 GroupName 属性,这样就不会有多选。然而,rbt4 是 rbt1 的一种扩展。那么使用复选框是否能够满足我的要求?
    • 为异常提供不同的 GroupName 可能会解决问题。
    • 你能解释一下给异常赋予不同的GroupName的含义吗?我不明白异常是什么意思
    • 那些可以同时被选中的单选按钮应该有不同的GroupName,比如rbt4和rbt1应该有不同的组名才能同时选择。
    【解决方案3】:

    参考此编码 注意:AutoPostBack="true"。删除两个单选按钮的相同组名。

    <asp:RadioButton ID="RadioButton1" runat="server" OnCheckedChanged="RadioButton1_CheckedChanged" AutoPostBack="true" />
    
    protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
            {
                RadioButton2.Checked = true;
            }
    

    【讨论】:

    • autopostback = "true" 是否有必要?表单还有其他部分供用户选择。
    • 否则它不起作用。您需要添加此属性。
    【解决方案4】:

    请在您的 html 代码中添加:AutoPostBack="true"

    <asp:RadioButton ID="rbt1" runat="server" AutoPostBack="true" Text="By Customer"GroupName="summary" OnCheckedChanged="enabled_CheckedChanged" Checked="True" />
    
    <asp:RadioButton ID="rbt4" runat="server" AutoPostBack="true" Text="With Target" OnCheckedChanged="enabled_CheckedChanged" GroupName="summary" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多