2010-12-19 22 views
5

Böyle sayfa yükleme aşamasında arkasında kodundan sayfaya denetimler eklemek çalışıyorum:Sayfanın sayfa yüklemesinde programatik olarak denetimi nasıl eklenir?

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/>")); 
} 

ben here Page.Controls.Add(hl) açık ve alıyorum hata olduğunu açıklaması:

Denetim koleksiyonu DataBind, Init, Load, PreRender veya Unload aşamaları sırasında değiştirilemez.

Bu sorunu gidermek için ne yapabilirim? Şimdiden teşekkürler.

cevap

4

Kendi sayfa koleksiyonunuzu oluşturun ve bunları doğrudan sayfa denetimleri koleksiyonuna eklemek yerine ekleyin. .aspx üzerinde

:

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

arkasında kodunda (I Init olay işleyicisi yerine sayfanın yüklenmesini kullanmanızı öneririz):

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

Hızlı cevabınız için teşekkürler, bana çok yardımcı oldu. Mutlu tatiller! – Laziale

0

Denetimlerinizi Sayfa 1'deki Init() olayına ekleyin.

+3

soruyu okuyun. Hata metni 'Init''den, bu mümkün olmayan yerlerden biri olarak bahseder. – Oded

İlgili konular