Wednesday, October 18, 2006

Eventos no se disparan en un WebUserControl en Visual Studio 2005

Cuando se crea un WebUserControl en Visual Studio 2005, y deseamos que ese control dispare eventos, se puede dar la siguiente situación: la primera vez que se ejecuta el aplicación se dispara el evento, sin embargo la siguientes ocasiones el evento no es disparado.

Esto se debe al comportamiento que tiene Visual Studio 2005 con la propiedad autoeventwireup, en VB el default es False en C# el defautl es true. Cuando AutoEventWireUp está en true, el framework creará las event handler de los controles y de las páginas automáticamente, sino buscará las definiciones en nuestro código. Para solucionar el problema mencionado anteriormente será necesario poner AutoEventWireUp en False y hacer la asignación de los event handlers del WebUserControl por medio del código.

bool ignoreCase = true;
bool throwOnFailure = false;
Delegate d = null;

d = Delegate.CreateDelegate(
typeof(EventHandler), this,
"Page_Load", ignoreCase,
throwOnFailure
);

Para más información pueden consultar:


http://odetocode.com/Blogs/scott/archive/2006/02/16/2914.aspx
http://support.microsoft.com/kb/324151
http://msdn2.microsoft.com/en-us/library/system.web.configuration.pagessection.autoeventwireup.aspx

PASS Marathon Spanish Edition Azure SQL Datawarehouse

Este 21 de febrero estaré participando como conferencista en el PASS Marathon Spanish Edition, el registro al evento está en el siguiente en...