5

マークアップに 2 つのテキスト ボックスがある 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 です。何が間違っていますか?

4

3 に答える 3

9

LoadControl( "your_user_control_app_relative_path.ascx" )「DateTimeUCuc=new DateTimeUC();」の代わりにメソッドを使用する必要があります。

于 2008-09-24T14:17:27.293 に答える
0

私はしばらく前にこの問題に遭遇しました。LoadControl()メソッドを使用する必要があります。このページをチェックしてください。

于 2008-09-24T14:22:26.750 に答える
0

フォーム自体ではなく、ページのフォームにコントロールを追加したいと思います。

あなたのコード:

Controls.Add( GenerateDateTime(parameter) );

試す:

Page.Form.Controls.Add( GenerateDateTime(parameter) );
于 2008-09-24T14:24:39.977 に答える