Modifica proprietà di visibilità sul pannello selezione RadioButtonList nella pagina asp.net
-
25-09-2019 - |
Domanda
Buongiorno StackOverflow!
Ho un piccolo problema che sto cercando di capire questo è intercettazioni la vita fuori di me!
Sulla mia pagina aspx voglio essere in grado di mostrare e nascondere alcuni pannelli a seconda selezioni dell'utente (radiobuttonlists).
Per esempio, nella mia pagina aspx ho;
<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>
Poi nel mio aspx.vb ho;
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
Inoltre ho provato un paio di varianti di questo codice, insieme con il tentativo un'istruzione select. Se qualcuno potesse offrire qualche consiglio su come lavorare questo fuori è molto grato
Grazie mille, Phil
EDIT:
Dopo ulteriori tentativi e qualche lettura su MSDN ora ho;
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
Ma quando provo a fare funzionare il codice ottengo;
"Oggetto non impostato a un'istanza di un oggetto" a questa linea Se RadioButtonList1.SelectedItem.Equals (3) allora
Soluzione
Hai un paio di motivi che sta succedendo. oggetto In primo luogo, non c'è è selezionato, in modo che quando si sta cercando di fare "RadioButtonList1.SelectedItem.Equals (3)", SelectedItem è nulla, quindi non c'è alcun oggetto per eseguire il confronto Equals.
Quindi, si sta cercando di vedere se il SelectedItem è uguale a 3. Il SelectedItem sarà un ListItem oggetto . Si vuole confrontare la proprietà Value di tale oggetto: RadioButtonList1.SelectedItem.Value
Ultimo, in quanto RadioButtonList1.SelectedItem.Value restituisce una stringa, che .equals non sarà mai vero, perché si sta chiedendo se il numero 3 è la stessa come la stringa "3".
Per risolvere il problema, gettare in un controllo per vedere se c'è un valore selezionato e quindi confrontare il RadioButtonList1.SelectedItem.Value alla stringa "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
Altri suggerimenti
panel.enabled = false
potrebbe fare il trucco, altrimenti si può sempre cercare di usare JavaScript o jQuery o qualcosa di simile a uno set
display = none
o chiamare il numero (con jquery)
$('#Panel1').hide();