¿Cómo obtener el control en el evento PreInit de ASP.NET? Los punteros son nulos y el método FindControl devuelve null.¿Cómo obtener el control en el evento PreInit de ASP.NET?
Estoy utilizando páginas maestras y de contenido. de marcado de la página de contenido es el siguiente:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentBody" runat="server">
<asp:Table ID="Table1" runat="server" Width="100%">
.....
</asp:Table>
</asp:Content>
Y código como este:
private void Page_PreInit(object sender, EventArgs e)
{
Control table = this.FindControl("Table1");
//table is null here
}
Así mesa todavía es nulo después de this.FindControl ("Tabla 1"). NamingContainer de la página también es nulo. ¿Qué estoy haciendo mal?
ACTUALIZACIÓN Tengo que usar este evento para crear controles. Como se dijo en el ASP.NET Page Life Cycle Overview, este evento se debe usar para la creación de control dinámico. Necesito crear una lista de enlaces en mi mesa. ¿Puede haber otra forma de hacerlo?
No estoy seguro de lo que está haciendo mal. ¿Tienes que usar el evento PreInit? ¿Puedes usar un evento posterior como Init? –
Como dice Matthew, un evento posterior podría ser mejor para ti. Sospecho que es un hecho que muchos de los controles realmente se juntan, por lo que si intenta acceder a ellos demasiado pronto en el ciclo de vida, todo se desmorona. http://msdn.microsoft.com/en-us/library/ms178472.aspx podría ser útil si ya no lo ha visto. – Chris
Después de leer su edición, generalmente agrego cosas al árbol de control en el evento page_load. No estoy seguro de a qué se refiere la sección a la que se refiere para ser sincero, pero no creo que signifique simplemente agregar un enlace a una página ... – Chris