2010-12-19 3 views
5

Ich versuche, die Seite Steuerelemente aus dem Code hinter der Seite Laststufe wie folgt hinzuzufügen:Wie kann die Seite beim Laden der Seite programmgesteuert hinzugefügt werden?

foreach (FileInfo fi in dirInfo.GetFiles()) 
{ 
    HyperLink hl = new HyperLink(); 
    hl.ID = "Hyperlink" + i++; 
    hl.Text = fi.Name; 
    hl.NavigateUrl = "../downloading.aspx?file=" + fi.Name + "&user=" + userIdpar; 
    Page.Controls.Add(hl); 
    Page.Controls.Add(new LiteralControl("<br/>")); 
} 

Der Fehler, den ich bekommen habe ist, auf Page.Controls.Add(hl) und hier ist die Erklärung:

Die Steuerelementauflistung kann während der Phasen DataBind, Init, Load, PreRender oder Unload nicht geändert werden.

Was kann ich tun, um dieses Problem zu beheben? Danke im Voraus.

Antwort

4

Erstellen Sie Ihre eigene Containersammlung und fügen Sie diese hinzu, anstatt direkt zur Seitensteuerungssammlung.

Auf ASPX-:

<asp:Panel id="links" runat="server" /> 

In Code-behind (Ich schlage vor, mit den Init Event-Handler, anstatt Seite zu laden):

foreach (FileInfo fi in dirInfo.GetFiles()) 
{ 
    HyperLink hl = new HyperLink(); 
    hl.ID = "Hyperlink" + i++; 
    hl.Text = fi.Name; 
    hl.NavigateUrl = "../downloading.aspx?file=" + fi.Name + "&user=" + userIdpar; 
    links.Controls.Add(hl); 
    links.Controls.Add(new LiteralControl("<br/>")); 
} 
+0

Danke für Ihre schnelle Antwort, es hat mir sehr geholfen. Schöne Ferien! – Laziale

0

Fügen Sie Ihre Steuerelemente in Init() Ereignis der Seite hinzu.

+3

die Frage lesen. Der Fehlertext erwähnt "Init" als einen der Orte, wo dies nicht möglich ist. – Oded

Verwandte Themen