2011-05-03 174 views
7

Estoy tratando de usar algo de AJAX y ASP.Net para permitirme ejecutar funciones sin tener que actualizar toda la página, pero me he topado con un problema al hacer estoASP.NET DropDownList Evento OnSelectedIndexChanged no activado

aquí está mi código

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:DropDownList ID="ddl1" runat="server" OnSelectedIndexChanged="update1" /> 

     <asp:TextBox runat="server" ID="txt1" /> 

    </ContentTemplate> 
</asp:UpdatePanel> 

Y aquí es mi código detrás

Sub update1(ByVal sender As Object, ByVal e As EventArgs) 

    txt1.Text = Now.ToString 

End Sub 

El evento no se dispara porque no tengo en mi AutoPostBack="True" ddl, pero añadiendo que a la ddl devolverá la página completa.

¿Hay una manera de evitar el uso de AutoPostBack="True" de modo que sólo actualiza el panel?

Sé que puedo utilizar un asp:Button de evitar esto, pero realmente me gustaría ser capaz de utilizar un ddl con OnSelectedIndexChanged

Gracias

+0

r u seguro AutoPostBack = "Verdadero" página completa de devolución de datos? –

+2

Al agregar autopostback = 'true' no se debe realizar una devolución de la página completa (al menos la página no parpadeará) - ¿debería simplemente actualizar el contenido del panel de actualización? – Paddy

Respuesta

7

Si se quiere evitar que enviar todo el estado de vista de el servidor, debe mirar callbacks.

En cambio, si se quiere evitar una actualización de toda la página, pero con devolución de datos, esto debería funcionar:

<asp:DropDownList ID="ddl1" runat="server" OnSelectedIndexChanged="update1" AutoPostBack="True" /> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <Triggers> 
     <asp:AsyncPostbackTrigger ControlID="ddl1" EventName="SelectedIndexChanged" /> 
    </Triggers> 
    <ContentTemplate> 
     <asp:TextBox runat="server" ID="txt1" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 
+0

Gracias que funciona genial –

+0

AutoPostBack = "True". Gracias. Odio usar UpdatePanels (prefiero JQuery) así que siento que retrocederé en el tiempo. Pero esto es lo que necesitaba hoy. Upvote. – granadaCoder

+0

Por qué esta respuesta no se da en todos lados con una pregunta similar ha sido completamente superada. Exactamente lo que estaba buscando. Gracias. – samuelesque

0

intente crear una nueva página con los mismos códigos y diferente nombre de la página. Funcionó para mí

+1

por favor comentarlo o mejorarlo –

Cuestiones relacionadas