2010-12-19 78 views
5

我試圖控制從後面的代碼在頁面加載階段添加到頁面這樣的:如何在頁面加載中以編程方式將控件添加到頁面中?

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

這我得到的是對Page.Controls.Add(hl)和這裏的錯誤解釋:

無法在DataBind,Init,Load,PreRender或Unload階段修改控件集合。

我該如何解決這個問題?提前致謝。

回答

4

創建您自己的容器集合並將其添加到它,而不是直接添加到頁面控件集合。

上的.aspx:

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

在後面的代碼(我建議使用Init事件處理程序,而不是頁面加載):

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

感謝您的快速回復,它幫助了我很多。節日快樂! – Laziale 2010-12-19 20:22:36

0

將您的控件添加到Page的Init()事件中。

+3

閱讀的問題。錯誤文本提到'Init'作爲其中一個不可能的地方。 – Oded 2010-12-19 20:13:09

相關問題