2008-09-24 66 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是空的,Controls.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));