在asp.net页面中更改radiobuttonlist选项中的面板可见性属性

时间:2010-02-04 07:29:34

标签: asp.net vb.net radiobuttonlist panels

早上好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)则

2 个答案:

答案 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();