2011-09-15 18 views
6

creé un sitio web ASP.NET. Lo que quiero hacer es hacer que una etiqueta cambie su contenido dependiendo del elemento seleccionado por una lista desplegable. He intentado esto, pero no funcionó:Cómo cambiar el texto de una etiqueta sin PostBack (usando los paneles de actualización)

la lista desplegable se ve así:

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

la etiqueta:

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

quiero hacerlo sin tener que utilizar PostBack.

He intentado utilizar ajax panel Actualizar De esta manera:

<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> 

Y en el DropDown1_SelectedIndexChanged Evento en el código detrás:

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

Pero esto no está funcionando.

¿Alguien me puede ayudar con eso?

Muchas gracias por cualquier ayuda

Respuesta

9

Aquí es la solución ..

reemplazar su control de aspx desplegable con debajo de uno ...

<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

Por favor, compruebe este código ... Con la sustitución de su código. en la página aspx solamente. su código detrás es correcto ... – sikender

+0

Entonces, ¿aunque solo el contenido en el Panel de Actualización se procesa nuevamente, toda la información de la página se envía al servidor incluso en la devolución de datos parcial? –

+0

Creo que su problema está resuelto, ahora. – sikender

5

necesita habilitar AutoPostBack y poner la definición controlador de eventos en el lugar correcto:

<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

Que usted por su respuesta. funcionó. desafortunadamente no puedo aceptar 2 respuestas – Youssef

0

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

Lea ese artículo sobre, por qué no utilizar los paneles de actualización, hay muchas otras soluciones mucho mejores para hacer el trabajo.

+0

esto es interesante. Pero otras soluciones implican el uso de javascript (algo que nunca he usado) Puedo consultarlo cuando tengo tiempo libre – Youssef

+3

Parece que el sitio vinculado ha sido pirateado. – epelc

Cuestiones relacionadas