2009-11-04 17 views
8

Al agregar controles de usuario programáticamente mediante LoadControl (ruta de cadena), cuando, en el ciclo de vida de la página del control de usuario, inicializa sus subcontroles con su estado de vista?ASP.NET: Viewstate y programáticamente agrega controles de usuario

Estoy haciendo esta pregunta porque uno de mis controles de usuario que está siendo cargado programáticamente tiene un control TextBox que no está siendo inicializado/cargado por su viewstate en PostBack en el evento Page_Load (que no es el caso para un regular. páginas aspx y de ahí mi confusión). En general, necesito recuperar valores del control TextBox.

Gracias

Respuesta

11

ViewState se carga antes el evento Page_Load. Si desea que su control funcione con ViewState, debe cargarlo y agregarlo a la página antes del evento —, generalmente en PreInit.

La referencia ciclo de vida está aquí:
http://msdn.microsoft.com/en-us/library/ms178472.aspx?ppud=4

Lea la descripción para el evento Pre Load, que precede inmediatamente carga de la página:

Usar este evento si es necesario para realizar el procesamiento de la página o control antes del evento Load.

Antes de que la instancia de página presente este evento, carga el estado de la vista para sí mismo y todos los controles, y luego procesa los datos de devolución incluidos con la instancia de solicitud.

Por lo tanto, antes del tiempo de carga ya es demasiado tarde. Además, la descripción del evento PreInit menciona específicamente que es el lugar para "crear o volver a crear controles dinámicos".

+0

Gracias! En una nota relacionada, el control de usuario que estoy agregando programáticamente ocurre en otro control de usuario que se está cargando declarativamente. Este evento PreInit de control de usuario principal declarado no se activa (por lo que no se llama al método 'protected void Page_PreInit (remitente del objeto, EventArgs e)'). ¿Sabe por qué Page_PreInit no recibe una llamada en este control de usuario declarado? – burnt1ce

+0

Los controles en sí mismos no tienen un preinicio, porque los eventos del ciclo de vida de la página de control se invocan desde la página y en el punto PreInit los controles todavía no están listos. Use Init en su lugar. –

+0

Muchas gracias. Tu sugerencia me salvó. =) – burnt1ce

Cuestiones relacionadas