2010-02-16 37 views
12

¿Hay algún evento de javascript que se active en la devolución de datos?Evento de Javascript en la página postback

En caso negativo, ¿cómo puedo ejecutar el código del lado del cliente inmediatamente después o antes de la devolución de la página?

+0

+1 Bienvenido a Stack Overflow, Bruno. – Sampson

Respuesta

0

Utilice AJAX, con un controlador de eventos para el onComplete.

2

El onsubmit evento en la etiqueta de formulario

Al usar jQuery es así

$("#yourformtagid").submit(function() { 
... 
} 
+0

JQuery? No estoy seguro de que OP quiera usar un framework completo solo para hacer su tarea;) –

+2

Pero cada sitio debe tener jQuery por si acaso :-) – TFD

+1

amigo, eso no fue genial. –

3

Se podría añadir el código JavaScript en su carga de la página así ...

Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", 
    "alert('hello world');", true); 

O

Page.ClientScript.RegisterStartupScript(this.GetType(), "alertScript", 
    "function Hello() { alert('hello world'); }", true); 
-1

No hay un evento de JavaScript producirá cuando una página se carga después de una devolución de datos, pero puede agregar javascript para su plantilla HTML (archivo .aspx) y sólo ejecutarlo si la página fue publicada, así:

<script type='text/javascript'> 
    var isPostBack = '<%= this.IsPostBack%>' == 'True'; 
    if (isPostBack) { 
     alert('It's a PostBack!'); 
    } 
</script> 

Si desea personalizar el JavaScript para funcionar únicamente bajo determinadas condiciones (no cualquier devolución de datos), puede crear una variable de nivel de página (protegido o público) en la clase de su página y hacer algo similar:

var userClickedSubmit = '<%= this.UserClickedSubmit%>' == 'True'; 
if (userClickedSubmit) { 
    // Do something in javascript 
} 

(Nada en contra de ClientScript.RegisterStartupScript, lo cual está bien, a veces desea mantener su javascript en la plantilla de página, por lo que si desea mantenerlo en su clase de página.)

1

El objeto Page.ClientScript tiene un RegisterOnSubmitStatement Esto se dispara después de que cualquier entrada envíe el formulario. Esto puede o no ser lo que está buscando, pero lo he usado para notificar al usuario sobre cambios no guardados en formularios editables.

La ventaja de utilizar este sobre RegisterStartupScript es que con RegisterOnSubmitStatement, si un usuario se desplaza fuera y hacia atrás utilizando el navegador, cualquier script que usted ha inyectado usando RegisterStartupScript podría disparar de nuevo, mientras que RegisterOnSubmitStatement sólo se ejecutará si el usuario ha enviado la forma.

+0

¡Gracias, probaré este enfoque! – Bruno

2

no sé si todavía necesita, pero echar un vistazo a esto:

Run javascript function after Postback

resuelvo mi problema utilizando este:

<script type="text/javascript"> 
var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm.add_endRequest(function (s, e) { 
    alert('Postback!'); 
}); 

hay un montón de opciones también, como

$('#id').live('change', function(){}); 

$(document).ready(function() {}); 
ClientScriptManager.RegisterStartupScript(this.GetType(), "AKey", "MyFunction();", true); 

y sigue adelante. Depende de lo que necesites.

Saludos =)

4

Creo que lo que busca es el Extracto Sys.WebForms.PageRequestManager beginRequest Event

:

El evento beginRequest se plantea ante la tramitación de una inicia devolución de datos asincrónica y la devolución de datos se envía al servidor. Puede utilizar este evento para llamar al script personalizado para establecer un encabezado de solicitud o para iniciar una animación que notifique al usuario que la devolución de datos se está procesando .

Código de ejemplo: (desde el enlace)

<script type="text/javascript" language="javascript"> 
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler); 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
    function BeginRequestHandler(sender, args) 
    { 
     var elem = args.get_postBackElement(); 
     ActivateAlertDiv('visible', 'AlertDiv', elem.value + ' processing...'); 
    } 
    function EndRequestHandler(sender, args) 
    { 
     ActivateAlertDiv('hidden', 'AlertDiv', ''); 
    } 
    function ActivateAlertDiv(visstring, elem, msg) 
    { 
     var adiv = $get(elem); 
     adiv.style.visibility = visstring; 
     adiv.innerHTML = msg;      
    } 
</script> 

espero que ayude. La clase PageRequestManager parece ser poco conocida y poco utilizada.

Cuestiones relacionadas