Элементы управления не отображаются в динамически созданном пользовательском элементе управления.

StackOverflow https://stackoverflow.com/questions/127413

Вопрос

У меня есть пользовательский элемент управления с именем 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.Что я делаю не так?

Это было полезно?

Решение

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

Другие советы

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

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

ваш код:

Controls.Add( GenerateDateTime(parameter) );

пытаться:

Page.Form.Controls.Add( GenerateDateTime(parameter) );
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top