2011-09-15 8 views
6

Ho creato un sito Web ASP.NET. Quello che voglio fare è fare in modo che un'etichetta cambi il suo contenuto in base all'elemento selezionato da un elenco a discesa. Ho provato questo, ma non ha funzionato:Modifica di un testo di etichetta senza Postback (utilizzando i pannelli di aggiornamento)

a discesa appare così:

<asp:DropDownList ID="DropDown1" runat="server" > 
    <asp:ListItem Value="a"></asp:ListItem> 
    <asp:ListItem Value="b"></asp:ListItem> 
    onselectedindexchanged="DropDown1_SelectedIndexChanged" 
</asp:DropDownList> 

l'etichetta:

<asp:Label ID="Label1" Text="" runat="server"/> 

voglio farlo senza dover utilizzare PostBack.

Ho cercato di usare ajax pannello di aggiornamento Ti piace questa:

<asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Conditional">   
    <Triggers> 
     <asp:AsyncPostBackTrigger controlid="DropDown1"          EventName="SelectedIndexChanged" /> 
    </Triggers> 
    <ContentTemplate> 
     <asp:Label ID="Label1" Text="" runat="server"/> 
    </ContentTemplate> 
</asp:UpdatePanel> 

E nel DropDown1_SelectedIndexChanged evento nel codice dietro:

protected void DropDown1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Label1.Text = DropDown1.SelectedValue; 
} 

Ma questo non sta funzionando.

Qualcuno può aiutarmi?

La ringrazio molto per tutto l'aiuto

risposta

9

Ecco la soluzione ..

sostituire il vostro controllo aspx a discesa con al di sotto una ..

<asp:DropDownList ID="DropDown1" runat="server" onselectedindexchanged="DropDown1_SelectedIndexChanged" AutoPostBack="true"> 
       <asp:ListItem Value="a"></asp:ListItem> 
       <asp:ListItem Value="b"></asp:ListItem> 
      </asp:DropDownList> 

<asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Conditional"> 
    <ContentTemplate> 
     <asp:Label ID="Label1" Text="test" runat="server"/> 
    </ContentTemplate> 

    <Triggers> 
     <asp:AsyncPostBackTrigger controlid="DropDown1" EventName="SelectedIndexChanged" /> 
    </Triggers> 
</asp:UpdatePanel> 
+0

Per favore, controlla questo codice ... Con la sostituzione del tuo codice. solo nella pagina di aspx. il tuo codice è giusto ... – sikender

+0

Quindi, anche se il contenuto di UpdatePanel viene nuovamente sottoposto a rendering, tutti i dati della pagina vengono inviati al server anche sul postback parziale? –

+0

Penso che il tuo problema sia risolto, ora. – sikender

5

È necessario abilitare i AutoPostBack e mettere la definizione gestore di eventi nel posto giusto:

<asp:DropDownList ID="DropDown1" runat="server" onselectedindexchanged="DropDown1_SelectedIndexChanged" AutoPostBack="true"> 
           <asp:ListItem Value="a"></asp:ListItem> 
           <asp:ListItem Value="b"></asp:ListItem> 
          </asp:DropDownList> 
+0

Che per la risposta. ha funzionato. sfortunatamente non posso accettare 2 risposte – Youssef

0

http://encosia.com/why-aspnet-ajax-updatepanels-are-dangerous/

Leggi l'articolo su, perché NON utilizzare gli updatepanel, ci sono molte altre soluzioni migliori per fare il lavoro.

+0

questo è interessante. Ma altre soluzioni implicano l'uso di javascript (Qualcosa che non ho mai usato) Potrei controllarlo quando ho tempo libero – Youssef

+3

Il sito collegato sembra essere stato violato. – epelc