ASP.NET - UpdatePanel y JavaScript
-
03-07-2019 - |
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?
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') });
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.