Элементы управления не отображаются в динамически создаваемом пользовательском элементе управления - PullRequest
5 голосов
/ 24 сентября 2008

У меня есть пользовательский элемент управления с именем DateTimeUC, в разметке которого есть два поля:

<asp:TextBox ID="dateTextBox" runat="server"></asp:TextBox>
<asp:TextBox ID="timeTextBox" runat="server"></asp:TextBox>

Я динамически создаю этот элемент управления в другом пользовательском элементе управления:

Controls.Add(GenerateDateTime(parameter));
private DateTimeUC GenerateDateTime(SomeParameter parameter)
{
    DateTimeUC uc = new DateTimeUC();
    uc.ID = parameter.Name;
    return uc;
}

Но когда я отрисовываю страницу, DateTimeUC ничего не рендерит. Я проверил это так:

protected override void Render(HtmlTextWriter writer)
{
    base.Render(writer);

    StringBuilder builder = new StringBuilder();
    StringWriter swriter = new StringWriter(builder);
    HtmlTextWriter hwriter = new HtmlTextWriter(swriter);
    base.Render(hwriter);
    string s = builder.ToString();
}

s пусто и Controls.Count равно 0. Что я делаю не так?

Ответы [ 3 ]

9 голосов
/ 24 сентября 2008

Вы должны использовать метод LoadControl( "your_user_control_app_relative_path.ascx" ) вместо «DateTimeUC uc = new DateTimeUC ();»

0 голосов
/ 24 сентября 2008

Я думаю, что вы хотите добавить свой контроль в форму страницы, а не саму форму.

ваш код:

Controls.Add( GenerateDateTime(parameter) );

попробовать:

Page.Form.Controls.Add( GenerateDateTime(parameter) );
0 голосов
/ 24 сентября 2008

Я сам столкнулся с этой проблемой некоторое время назад. Вам необходимо использовать метод LoadControl (). Проверьте эту страницу на ней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...