2010-12-19 71 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

相关问题