Come ottenere il controllo nell'evento PreInit ASP.NET? I puntatori sono nulli e il metodo FindControl restituisce null.Come ottenere il controllo nell'evento PreInit ASP.NET?
Sto utilizzando le pagine principale e di contenuto. Markup della pagina di contenuto simile a questo:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentBody" runat="server">
<asp:Table ID="Table1" runat="server" Width="100%">
.....
</asp:Table>
</asp:Content>
E codice come questo:
private void Page_PreInit(object sender, EventArgs e)
{
Control table = this.FindControl("Table1");
//table is null here
}
Così tavolo è ancora nulla dopo this.FindControl ("Table1"). Anche NamingContainer della pagina è nullo. Che cosa sto facendo di sbagliato?
UPDATE Devo utilizzare questo evento per creare controlli. Come detto nello ASP.NET Page Life Cycle Overview, questo evento dovrebbe essere usato per la creazione del controllo dinamico. Devo creare un elenco di collegamenti nella mia tabella. Potrebbe esserci un altro modo per farlo?
Non sono sicuro di quello che stai facendo male. Devi usare l'evento PreInit? Puoi usare un evento successivo come Init? –
Come Matthew dice che un evento successivo potrebbe adattarsi meglio a te. Sospetto che sia in init che un sacco di controlli vengono messi insieme quindi se provi ad accedere a cose troppo presto nel ciclo di vita, tutto va in pezzi. http://msdn.microsoft.com/en-us/library/ms178472.aspx potrebbe essere utile se non lo hai già visto. – Chris
Dopo aver letto la modifica, in genere aggiungo elementi all'albero di controllo nell'evento page_load. Non sono sicuro di quale sia la parte che hai citato si riferisce ad essere onesto, ma non credo che significhi solo aggiungere un link a una pagina ... – Chris