【问题标题】:Radio Group doesn't unHide when Checkbox is selected选中复选框时,无线电组不会取消隐藏
【发布时间】:2015-10-06 18:35:28
【问题描述】:

如果选中了上面的复选框,我会尝试取消隐藏一组单选按钮,并在未选中复选框时隐藏它们。我在同一个应用程序中有一个以前的版本,它在“工作”下工作得很好[单选按钮打开复选框]。 When MinorCheck is selected the radio buttons don't become visible.没有错误显示,没有任何反应。为什么是这样?

我查看了其他 cmets 如何 Visible = "false" 停止它等等。但是,很明显,开始时的 visible="false" 对我的第一个编码块来说不是问题。

我使用过的一个参考:ASP.NET CheckBox does not fire CheckedChanged event when unchecking

工作一:

HTML

<td class="LeftAlign" width="24%">                 

<font class="Blackfont" size="1">
<B>                                     Union Affiliated?
</B>
</font>
<font class="WeOrangefont" size="1">
&#8226;
</font>
</td>
    <td width="10%">
       <asp:RadioButtonList ID="rblclass" runat="server" AutoPostBack="True" class="Bluefont" size="1" font-Bold="True" font-Size="8pt" >

              <asp:ListItem Value="Y">Yes</asp:ListItem>
              <asp:ListItem Value="N">No</asp:ListItem>
       </asp:RadioButtonList>
     </td>

     <td></td>  
  </tr>
</table>

VB.NET

Protected Sub rblclass_SelectedIndexChanged(sender As Object, e As EventArgs) Handles rblclass.SelectedIndexChanged
    If (rblclass.SelectedValue = "Y") Then
        Register.Focus()
        union1.Visible = True
        union2.Visible = True
        union3.Visible = True
        LocalLbl.Visible = True
        Reqimage.Visible = True
    Else
        Register.Focus()
        union1.Visible = False
        union2.Visible = False
        union3.Visible = False
        LocalLbl.Visible = False
        Reqimage.Visible = False
    End If

End Sub

编码的其他部分即使非常相似也不起作用:

<tr>
<td class="LeftAlign" colspan="2">
    <font class="Blackfont" size="1">
               <asp:CheckBox ID="MinorCheck" runat="server" NAME="BUSINESSCLASSIFICATION" 
               class="ownerClass" value="000" checked = "false" TabIndex="32"/>

               <asp:HyperLink ID="HyperLink2" runat="server" TABSTOP = "-1" onClick="OpenWindow('Images/Supp.html', 'Min Business Concern',600, 300, 'no')" font-Underline="True" ForeColor="#666666" >Minority Business Concern</asp:HyperLink> 
   </font>
</td>

</tr>
<tr>    
  <td>
     <asp:RadioButtonList ID="RadioButtonBClass" runat="server" AutoPostBack="True"
                            class="Bluefont" size="1" font-Bold="True" font-Size="8pt" visible = "false">

      <asp:ListItem Value="Y" >African-American male</asp:ListItem>
      <asp:ListItem Value="N">African-American female</asp:ListItem>
      <asp:ListItem Value="N">Asian-Indian American male</asp:ListItem>
      <asp:ListItem Value="N">Asian-Indian American female</asp:ListItem>
      <asp:ListItem Value="N">Asian-Pacific American male</asp:ListItem>
      <asp:ListItem Value="N">Asian-Pacific American female</asp:ListItem>
      <asp:ListItem Value="N">Native American male</asp:ListItem>
      <asp:ListItem Value="N">Native American female</asp:ListItem>

  </asp:RadioButtonList>
  </td>
</tr>

VB.NET

Protected Sub MinorCheck_CheckedChanged(sender As Object, e As EventArgs) Handles MinorCheck.CheckedChanged
    If (MinorCheck.Checked = true) Then
        RadioButtonBClass.Visible = True
        NonMinorCheck.Checked = false
    Else
        RadioButtonBClass.Visible = False
    End If
End Sub

【问题讨论】:

  • 当我发布时,MinorCheck 的“”超过了真/假,即使我的编码没有它。无论如何,上述编码目前不起作用

标签: html vb.net checkbox visible


【解决方案1】:

您的复选框缺少AutotPostBack=True。没有它,CheckedChanged 事件将不会触发,直到某个其他控件执行 PostBack

【讨论】:

  • 我确实是个小错误。我现在正式理解 AutoPostBack 的意思 o.o 。我只是总是看到它并认为它是必需的,但现在我知道当你没有它时会发生什么。谢谢!这解决了我的问题!
  • 如果您不介意我问您一个简单的问题...选中作品时的前 2 个单选按钮;但是,如果碰巧选择了其他人,则在选中单选按钮后,页面“刷新”到页面顶部后,它们会更改为第二个单选按钮@InbetweenWeekends
  • 没关系.. 删除了 value="n" 和 value="y" 以阻止它
【解决方案2】:

这很令人困惑,但是当您在 ASP 控件中使用属性 Visible 时,实际上根本不创建对象,因此如果您尝试更改为 Visible true 是行不通的,我个人使用的是一个技巧一个 CSS 类,我将复制我为您的案例编写的代码:

<style>
    .CSSHiden {
        display: none;
    }
</style>

注意:我在 Checkbox Minor Check 上设置了 Autopostback=true

<asp:CheckBox ID="MinorCheck" runat="server" NAME="BUSINESSCLASSIFICATION" 
           class="ownerClass" value="000" TabIndex="32" OnCheckedChanged="MinorCheck_CheckedChanged" AutoPostBack="True"/>
<asp:HyperLink ID="HyperLink2" runat="server" TABSTOP = "-1" onClick="OpenWindow('Images/Supp.html', 'Min Business Concern',600, 300, 'no')" font-Underline="True" ForeColor="#666666" >Minority Business Concern</asp:HyperLink>

    <asp:RadioButtonList ID="RadioButtonBClass" runat="server" AutoPostBack="True" class="Bluefont" size="1" font-Bold="True" font-Size="8pt" CssClass="CSSHiden">
        <asp:ListItem Value="Y" >African-American male</asp:ListItem>
      <asp:ListItem Value="N">African-American female</asp:ListItem>
      <asp:ListItem Value="N">Asian-Indian American male</asp:ListItem>
      <asp:ListItem Value="N">Asian-Indian American female</asp:ListItem>
      <asp:ListItem Value="N">Asian-Pacific American male</asp:ListItem>
      <asp:ListItem Value="N">Asian-Pacific American female</asp:ListItem>
      <asp:ListItem Value="N">Native American male</asp:ListItem>
      <asp:ListItem Value="N">Native American female</asp:ListItem>

    </asp:RadioButtonList>

还有我用c#的代码,不过改成VB.net很简单

protected void MinorCheck_CheckedChanged(object sender, EventArgs e)
    {
        if (MinorCheck.Checked == true)
            RadioButtonBClass.CssClass = "";
        else
            RadioButtonBClass.CssClass = "CSSHiden";
    }

【讨论】:

  • @InbetweenWeekends 解决了我的问题。我一直使用 visible = "false" 但没有意识到这意味着没有创建对象。我肯定会更多地研究这个概念。我也会考虑测试你的例子。我很欣赏你给我的例子。从来没有想过在 if else 语句中拉一个类:)
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多