Reemplazar __doPostBack
En ocasiones, cuando escribimos nuestras aplicaciones ASP.Net necesitamos realizar acciones antes de que se invoque el PostBack - por ejemplo, deshabilitar los botones del WebForm.
Navegando por ahí - no puedo citar la fuente porque no la recuerdo - encontre este truco que reemplaza a la funcion __doPostBack de ASP.Net, permitiendonos modificar el comportamiento y añadir nueva funcionalidad.
El código de la función es el siguiente:
<script language="javascript" type="text/javascript"> // Almacenamos una referencia a la funcion __doPostBack original. var __oldDoPostBack = __doPostBack; // Reemplazamos la funcion __doPostBack con otra de la misma firma. // Cuando ASP.NET llame a __doPostBack en realidad llamara a la nueva // función. __doPostBack = FormSubmitEvent; function FormSubmitEvent (eventTarget, eventArgument) { disableButtons(); return __oldDoPostBack (eventTarget, eventArgument); } </script> |
, donde disableButtons es una función que deshabilita los botones.
Recordar que este código solo se ejecutará cuando el Postback sea provocado por un control de servidor. Si queremos controlar los envios producidos por botones de tipo submit debemos suscribirnos al evento OnSubmit del formulario html.
Nota: El evento OnSubmit solo se dispara con un botón de tipo submit, y no con a través de JavaScript con una invocación al método submit del formulario.
Saludos, DJK.