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

2 comments:

@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

SQL Server 2016 Stretch Databases

El SQL Server Stretch Database permite que los datos históricos o de bitácoras puedan ser movidos hacia Azure, específicamente permite mover...