Jak uzyskać kontrolę w wydarzeniu ASP.NET PreInit? Wskaźniki są puste, a metoda FindControl zwraca wartość null.Jak uzyskać kontrolę w wydarzeniu ASP.NET PreInit?
Używam stron wzorcowych i stron z treścią. Markup strony zawartości wygląda następująco:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentBody" runat="server">
<asp:Table ID="Table1" runat="server" Width="100%">
.....
</asp:Table>
</asp:Content>
i kod tak:
private void Page_PreInit(object sender, EventArgs e)
{
Control table = this.FindControl("Table1");
//table is null here
}
Więc tabeli nadal jest zerowy po this.FindControl ("Tabela1"). NamingContainer strony również ma wartość zerową. Co ja robię źle?
AKTUALIZACJA Muszę użyć tego zdarzenia, aby utworzyć formanty. Jak wspomniano w ASP.NET Page Life Cycle Overview to zdarzenie powinno być używane do tworzenia dynamicznych kontroli. Muszę utworzyć listę linków w mojej tabeli. Być może jest inny sposób na zrobienie tego?
Nie jestem pewien, co robisz źle. Czy musisz korzystać ze zdarzenia PreInit? Czy możesz użyć późniejszego wydarzenia, takiego jak Init? –
Tak jak Matthew mówi, że późniejsze wydarzenie może ci bardziej odpowiadać. Podejrzewam, że jest on inicjowany, ponieważ wiele elementów sterujących jest rzeczywiście połączonych, więc jeśli spróbujesz uzyskać dostęp do rzeczy zbyt wcześnie w cyklu życia, wszystko się rozpada. http://msdn.microsoft.com/en-us/library/ms178472.aspx może się przydać, jeśli już go nie widziałeś. – Chris
Po przeczytaniu twojej edycji generalnie dodaję rzeczy do drzewa kontrolnego w zdarzeniu page_load. Nie jestem pewien, co ta sekcja, którą cytujesz, odnosi się do szczerości, ale myślę, że nie oznacza to po prostu dodawania linku do strony ... – Chris