早上好stackoverflow!
我有一点问题,我正试图解决那些困扰我的生活!
在我的.aspx页面上,我希望能够显示和隐藏某些面板,具体取决于用户选择(radiobuttonlists)。
例如,在我的aspx页面中,我有;
<form id="form1" runat="server">
<asp:RadioButtonList ID="RadioButtonList1" runat="server" AutoPostBack="True">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
</asp:RadioButtonList>
<asp:Panel ID="Panel1" runat="server" Width="50%">
Visible or not visible depending on radio choice<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</asp:Panel>
</form>
然后在我的aspx.vb中我有;
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If RadioButtonList1.SelectedItem.Equals(Nothing) Then
Panel1.Visible = False
Else
RadioButtonList1.SelectedItem.Equals(3)
Panel1.Visible = True
End If
End Sub
我还尝试了一些不同的代码变体,并尝试了一个select语句。如果有人可以提供任何关于如何工作的建议,那就非常感激
非常感谢, 菲尔
编辑:
经过进一步的尝试和对msdn的一些阅读我现在有了;
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Show or Hide the Panel contents.
If RadioButtonList1.SelectedItem.Equals(3) Then
Panel1.Visible = True
Else
Panel1.Visible = False
End If
End Sub
但是当我尝试运行我得到的代码时;
“对象引用未设置为此对象的实例”如果RadioButtonList1.SelectedItem.Equals(3)则
答案 0 :(得分:1)
你有几个原因正在发生。首先,没有选定的项目,所以当你试图做“RadioButtonList1.SelectedItem.Equals(3)”时,SelectedItem是Nothing,所以没有对象来执行Equals比较。
接下来,您将尝试查看SelectedItem是否等于3. SelectedItem将是ListItem object。您想要比较该对象的Value属性:RadioButtonList1.SelectedItem.Value
最后,因为RadioButtonList1.SelectedItem.Value返回一个字符串,所以.Equals永远不会为真,因为你问的是数字3是否与字符串“3”相同。
要修复它,请检查是否有所选值,然后将RadioButtonList1.SelectedItem.Value与字符串“3”进行比较:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Set the panel to hidden by default
Panel1.Visible = False
' Check to see if there's a selected value
If Not RadioButtonList1.SelectedItem Is Nothing Then
' there is.. check to see if the value is correct
If RadioButtonList1.SelectedItem.Value = "3" Then
' it is.. show the panel!
Panel1.Visible = True
End If
End If
End Sub
答案 1 :(得分:0)
panel.enabled = false
可能会做到这一点,否则你总是可以尝试使用javascript或jquery或类似的东西来设置
display = none
或致电(使用jquery)
$('#Panel1').hide();