usar update trigger template net ejemplos content como asp c# asp.net ajax asp.net-ajax updatepanel

trigger - updatepanel c#



ActualizaciĆ³n de un control fuera del UpdatePanel (4)

Así que tengo un UserControl con algunas DropDownList cascada. Seleccionar de la lista 1 habilita la lista 2, que a su vez habilita la lista 3. Una vez que haya hecho una selección en las tres listas, puede pasar a la página siguiente.

Las DropDownList s están dentro de un UpdatePanel . Pero el botón "Página siguiente" está fuera del UpdatePanel . Ese botón debe deshabilitarse hasta que las tres listas tengan una selección, y luego debe habilitarse de nuevo. Pero como el botón está fuera de UpdatePanel , no se actualiza cuando hago selecciones. ( Editar : El botón "Página siguiente" está en una página que también contiene el UserControl ).

Sé una forma de resolver esto:

var scriptManager = ScriptManager.GetCurrent(this.Page); scriptManager.RegisterPostBackControl(dropDownList1); scriptManager.RegisterPostBackControl(dropDownList2); scriptManager.RegisterPostBackControl(dropDownList3);

Esto asegura una devolución de datos cuando se cambia cualquier lista desplegable, de modo que el botón se puede actualizar. Pero si hago esto, podría simplificar al deshacerme del UpdatePanel en primer lugar.

¿Hay alguna otra forma, a través de JavaScript inteligente o algo así, de que pueda actualizar un control fuera de un UpdatePanel sin tener que renunciar a Ajax?


¿No podría agregar un panel de actualización alrededor de la "página siguiente" y luego agregar un activador al panel de actualización de la lista desplegable para activar el siguiente panel de actualización de la página?

Simplemente tirando ideas, sin realmente haberlo probado :)


Coloque un UpdatePanel alrededor del siguiente botón y cree un activador para cada uno de los menús desplegables para que active una devolución de datos asincrónica. Ex:

<Triggers> <asp:AsyncPostBackTrigger ControlID="dropDownList1" /> <asp:AsyncPostBackTrigger ControlID="dropDownList2" /> <asp:AsyncPostBackTrigger ControlID="dropDownList3" /> </Triggers>


Idealmente, esto se haría en javascript, con una verificación de validación del lado del servidor en el controlador de eventos click.

Un ejemplo rápido de jQuery:

//assuming the dropdowns all have the css class "cascade" $(''select.cascade'').change(function() { If ($(''option:selected'',this).length == 3) { $(''input[id$=btnNext]'').removeAttr(''disabled''); } });


puede actualizar un control fuera del panel de actualización colocándolo en update_panel2 y diciendo update_panel2.update() .

Tenga en cuenta que UpdateMode de UpdatePanel se debe establecer en conditional para que esto funcione.