2009-01-06 40 views
23

Hay una forma de ejecutar el script cuando finaliza un proceso de UpdatePanel.ASP.NET - UpdatePanel y JavaScript

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

Respuesta

29

Sí:

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

Y luego:

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

Documentación here y here. Tenga en cuenta que esto se activará para cada solicitud de AJAX en la página.

26

Esto debe 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> 
+1

Gracias. Lo usé para agregar un spinner. –

2

Bruno,

En primer lugar, para responder a su pregunta directa. En la devolución de llamada que llama el panel de actualización, debe poder utilizar una llamada RegisterStartupScript para invocar un método JS. Luego, en el método de JS, que le mostrará el mensaje y entonces usted puede utilizar un hacer:

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

tenerlo desvanecen después de 4 segundos.

Para ir un paso más allá, dado que ya está implementando JavaScript, lo invito a consultar this article about UpdatePanels. De ser posible, trataría de enviar llamadas Ajax para hacer su inserción, copia y edición, lo que simplificaría aún más los comentarios de los usuarios y evitaría el exceso de información a través del cable.

+0

No creo que las llamadas a RegisterStartupScript puedan inyectar JS en una devolución de llamada AJAX. –

+0

Me estoy alejando de UpdatePanels y avanzando hacia WCF/AJAX a través de MS AJAX y jQuery. Este es solo un proyecto antiguo que funciona, pero pensé que agregaría algunos UpdatePanels para hacerlo más elegante. – BuddyJoe

3
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

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

Trabajo con muchas páginas que contienen múltiples paneles de actualización y he aprendido que esto se activará automáticamente incluso si Updatepanel no lo quiere para las actualizaciones. Por lo tanto, 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 
Cuestiones relacionadas