ASP.NET -UpdatePanel y JavaScript


Hay una manera de ejecutar script cuando se termina un proceso UpdatePanel.

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

Author: BuddyJoe, 2009-01-06

6 answers

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 activará para cada solicitud AJAX en la página.

 30
Author: Robert C. Barth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-06 20:59:33

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> 
 26
Author: cgreeno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-04 22:35:14

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

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

 4
Author: ctorx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-12 20:49:00
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

 3
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-23 16:13:31

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

Trabajo con muchas páginas que contienen múltiples Updatepanels y he aprendido que esto se activará automáticamente incluso si el Updatepanel no lo desea para actualizaciones. Así que dentro de la función que se activa en el evento asegúrese de que tiene algo como:

function BeginRequestHandler(sender, args) {
if (args.get_postBackElement().id == "ID of the Updatepanel") {
// do stuff here
 3
Author: Brian Lorraine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-06 03:49:35

[1]} Bruno,

Primero, para responder a su pregunta directa. En la devolución de llamada que está siendo llamada por el panel de actualización, debería 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 do a:

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

Para que desaparezca después de 4 segundos.

Para ir un paso más allá, ya que ya estás implementando JavaScript, te invito a revisar este artículo sobre UpdatePanels. Si posible, intentaría enviar llamadas Ajax para hacer su inserción, copia y edición y esto simplificaría aún más sus comentarios de usuario y evitaría el exceso de información a través del cable.

 2
Author: AdamB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-06 21:00:28