Pregunta

¿Hay alguna forma de ejecutar el script cuando finaliza un proceso de UpdatePanel?

Tengo una página que permite "insertar", "copiar" y "editar" de un registro. Todo esto se hace en un UpdatePanel para evitar una navegación de la página. En otro lugar de la página, me gustaría imprimir un " flash " mensaje - como " Ha ingresado exitosamente un registro. " No está cerca del UpdatePanel y me gustaría usar un efecto jQuery en el mensaje para que desaparezca después de 4 segundos. ¿Cómo puedo enviar un script de vuelta con UpdatePanel o hacer que se ejecute después de una actualización de UpdatePanel? ¿Debo escribir script para un asp: literal? pensamientos?

¿Fue útil?

Solución

Sí:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);

Y luego:

function endRequestHandler(sender, args)
{
  // Do stuff
}

Documentación aquí y aquí . Tenga en cuenta que esto se disparará por cada solicitud de AJAX en la página.

Otros consejos

Esto debería hacer el truco:

       <script type="text/javascript">
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            prm.add_beginRequest(BeginRequestHandler);
            prm.add_endRequest(EndRequestHandler);

            function BeginRequestHandler(sender, args) 
            {
                 //Jquery Call
            }

            function EndRequestHandler(sender, args) 
            {
                 //Jquery Call

            }
        </script> 

Aquí hay un artículo sobre cómo hacerlo usando el método estático RegisterClientScriptBlock de ScriptManager. Lo probé y funciona a las mil maravillas.

http://csharperimage.jeremylikness.com /2009/06/inject-dynamic-javascript-into-aspnet.html

var requestManager = Sys.WebForms.PageRequestManager.getInstance();
requestManager.add_beginRequest(function () { alert('here1') });
requestManager.add_endRequest(function () { alert(here2') });

Fuente: http://www.howtositecore.com/?p=36

El método Sys.WebForms.PageRequestManager.getInstance () también funciona muy bien para mí.

Trabajo con muchas páginas que contienen múltiples paneles de actualización y he aprendido que esto se activará automáticamente incluso si el panel de actualización que no desea actualizar. Entonces, dentro de la función que se activa en el evento, asegúrese de tener algo como:

function BeginRequestHandler(sender, args) {
if (args.get_postBackElement().id == "ID of the Updatepanel") {
// do stuff here

Bruno,

Primero, para responder a su pregunta directa. En la devolución de llamada que está llamando el panel de actualización, debe poder usar una llamada RegisterStartupScript para invocar un método JS. Luego, en su método JS, mostraría el mensaje y luego puede usar hacer un:

setTimeout('$('#myMessage').fadeOut("slow")', 4000);

para que desaparezca después de 4 segundos.

Para ir un paso más allá, ya que ya está implementando JavaScript, lo invitaría a revisar este artículo sobre UpdatePanels . Si es posible, trataría de enviar llamadas a Ajax para realizar su inserción, copia y edición, y esto simplificaría aún más los comentarios de los usuarios y evitaría el exceso de información a través del cable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top