Как добавить элемент управления на страницу программно при загрузке страницы? - PullRequest
5 голосов
/ 19 декабря 2010

Я пытаюсь добавить элементы управления на страницу из кода, находящегося на этапе загрузки страницы, следующим образом:

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.

Что можно сделать, чтобы решить эту проблему?Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 19 декабря 2010

Создайте свою собственную коллекцию контейнеров и добавьте ее в нее, а не прямо в коллекцию элементов управления страниц.

Вкл .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 голосов
/ 19 декабря 2010

Добавьте ваши элементы управления в событие Init () страницы.

...