加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何在页面加载中以编程方式向页面添加控件?

发布时间:2020-12-15 19:58:48 所属栏目:asp.Net 来源:网络整理
导读:我试图从页面加载阶段后面的代码添加控件到页面,如下所示: 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 + "us
我试图从页面加载阶段后面的代码添加控件到页面,如下所示:
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)上,这里是解释:

The control collection cannot be modified during DataBind,Init,Load,PreRender or Unload phases.

我该怎么做才能解决这个问题?提前致谢.

解决方法

创建自己的容器集合并将其添加到它,而不是直接添加到页面控件集合.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读