2008-09-24 2 views
5

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

ответ

9

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

+0

Искал ответ на это весь день. Благодаря! – McMuttons 2010-09-20 12:58:09

0

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

0

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

код:

Controls.Add(GenerateDateTime(parameter)); 

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

Page.Form.Controls.Add(GenerateDateTime(parameter)); 
Смежные вопросы

 Смежные вопросы