Элементы управления не отображаются в динамически созданном пользовательском элементе управления.
-
02-07-2019 - |
Вопрос
У меня есть пользовательский элемент управления с именем 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) );
Не связан с StackOverflow