Изменение свойства видимости панели при выборе радиобуттониста на странице asp.net - PullRequest
1 голос
/ 04 февраля 2010

Доброе утро, переполнение стека!

У меня есть небольшая проблема, я пытаюсь решить эту проблему, мешая моей жизни!

На моей странице .aspx я хочу иметь возможностьпоказать и скрыть определенные панели в зависимости от выбора пользователя (списки радиобуттон).

Например, на моей странице 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

Я также пробовал несколько разныхварианты этого кода, наряду с попыткой выбора оператора.Если кто-то может предложить какой-либо совет о том, как решить этот вопрос, он очень ценит его

Большое спасибо, Фил

РЕДАКТИРОВАТЬ:

После дальнейших попыток и некоторого чтения на 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

Но когда я пытаюсь запустить код, я получаю;

"Ссылка на объект не установлена ​​для экземпляра объекта" в этой строке If RadioButtonList1.SelectedItem.Equals (3) Then

Ответы [ 2 ]

1 голос
/ 04 февраля 2010

У вас есть несколько причин, по которым это происходит. Во-первых, нет выделенного элемента, поэтому, когда вы пытаетесь выполнить «RadioButtonList1.SelectedItem.Equals (3)», SelectedItem равен Nothing, поэтому нет объекта для выполнения сравнения Equals.

Далее вы пытаетесь увидеть, равен ли SelectedItem 3. SelectedItem будет ListItem объект . Вы хотите сравнить свойство 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
0 голосов
/ 04 февраля 2010
panel.enabled = false

может сработать, иначе вы всегда можете попробовать использовать javascript или jquery или что-то подобное для установки

display = none

или звоните (с помощью jquery)

$('#Panel1').hide();
...