选中复选框后,单选组不会取消隐藏
Radio Group doesn't unHide when Checkbox is selected
我正在尝试取消隐藏一组单选按钮,如果它上面的复选框被选中,并在未选中复选框时隐藏它们。我有一个以前的版本,在同一个应用程序中,它工作得很好 [radio button opens checkboxes instead] 在 Working one 下。选择 MinorCheck
时,单选按钮不可见。没有错误显示,没有任何反应。为什么是这样?
我看过其他评论 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">
•
</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
这很令人困惑,但是当您在 ASP 控件中使用 属性 Visible 时,实际上根本不会创建该对象,因此如果您尝试更改为 Visible true 则不会工作,我个人使用的是 CSS Class 的技巧,我将复制我为您的案例制作的代码:
<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";
}
您的复选框缺少 AutotPostBack=True
。没有它,CheckedChanged
事件将不会触发,直到其他控件执行 PostBack
.
我正在尝试取消隐藏一组单选按钮,如果它上面的复选框被选中,并在未选中复选框时隐藏它们。我有一个以前的版本,在同一个应用程序中,它工作得很好 [radio button opens checkboxes instead] 在 Working one 下。选择 MinorCheck
时,单选按钮不可见。没有错误显示,没有任何反应。为什么是这样?
我看过其他评论 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">
•
</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
这很令人困惑,但是当您在 ASP 控件中使用 属性 Visible 时,实际上根本不会创建该对象,因此如果您尝试更改为 Visible true 则不会工作,我个人使用的是 CSS Class 的技巧,我将复制我为您的案例制作的代码:
<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";
}
您的复选框缺少 AutotPostBack=True
。没有它,CheckedChanged
事件将不会触发,直到其他控件执行 PostBack
.