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

Comments

L@r@u said…
Hola! Disculpa podrias detallar la sintaxis que colocaste en este tema, entiendo que dispara el evento page_load pero si quiere disparar cualquier otro evento o incluso una funcion ?

Saludos Gracias...
Eduardo Castro said…
Lo que tienes que hacer es definir el nuevo evento que despues lo ligas con el mismo código que he publicado, solo tienes que cambiar el nombre del evento que quieres disparar, para el caso de las funciones lo puedes hacer con delegates

Popular posts from this blog

Cómo identificar consultas más pesadas en SQL Server

Permitiendo la administración de los jobs a usuarios que no son System Administrators en SQL Server Agent 2005 o superior

FileTable en SQL Server 2012