2008-09-24 122 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));