Tengo un problema con ViewState. Tengo una página aspx que tiene una vista de árbol a la izquierda y un Panel de actualización con un panel ASP.NET adentro a la derecha. Es en ese Panel interno donde cargo y descargo dinámicamente los controles de usuario. Yo uso ese panel de actualización para cargar controles dinámicamente.Viewstate variable perdido en el control del usuario cargado dinámicamente
También hice un control personalizado para mis controles de usuario porque necesito pasar algunos valores de la página. En ese constructor utilizo ViewState para almacenar estos valores.
La primera vez que cargo el control de usuario llamo a su constructor con los parámetros. Cuando vuelvo a cargar ese control de usuario en cada devolución, utilizo su constructor normal.
Mi problema es que los valores que he almacenado en ViewState se han vuelto nulos en la devolución de datos sucesiva.
Actualización:
Este es un pedazo de mi control de usuario:
public class MyUserControl : System.Web.UI.UserControl
{
private int PKId
{
get { return ViewState["pkId"] as int; }
set { ViewState["pkId"] = value; }
}
public MyUserControl(int pkId)
{
this.PKId = pkId;
}
...
}
estoy siguiendo este artículo para cargar dinámicamente controles: http://msdn.microsoft.com/en-us/magazine/cc748662.aspx#id0070065.
Segunda Actualización:
I también ajustar el mismo ID de control cuando la carga del control de usuario en la primera vez y en cada reaload.
Tal vez pueda usar otro método para almacenar estos valores como campos ocultos de entrada o Caché. Elegí ViewState porque no quiero sobrecargar el servidor con valores de sesión para cada usuario.
Tercera actualización:
I load the controls with this code:
System.Web.UI.UserControl baseControl = LoadControl(ucUrl) as System.Web.UI.UserControl;
if (baseControl != null)
{
baseControl.ID = "DestinationUserControl";
PanelDestination.Controls.Add(baseControl);
}
Y reaload con este código:
DynamicControls.CreateDestination ud = this.LoadControl(TrackedUserControl) as DynamicControls.CreateDestination;
if (ud != null)
{
ud.ID = "DestinationUserControl";
PanelDestination.Controls.Add(ud);
}
¿Qué está pasando?
Proporcione algunos de los códigos que lo están haciendo para que podamos tener una mejor idea de lo que está sucediendo. –
He actualizado la pregunta. – VansFannel
¿Por qué lo escribe como UserControl en la carga inicial y como CreateDestination en la carga? –