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.

Valorar el contenido:
Fecha de alta:15/09/2008
Última actualizacion:15/09/2008
Visitas totales:3920
Reemplazar __doPostBack
Pedro Herrarte Sánchez

Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación. Posee mas de diez años de experiencia trabajando para las principales empresas de España. Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas. Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE). Es fundador, diseñador y programador de www.devjoker.com.