Question

J'ai un contrôle utilisateur nommé DateTimeUC qui a deux zones de texte sur son balisage:

<asp:TextBox ID="dateTextBox" runat="server"></asp:TextBox>
<asp:TextBox ID="timeTextBox" runat="server"></asp:TextBox>

Je crée dynamiquement ce contrôle dans un autre contrôle utilisateur:

Controls.Add(GenerateDateTime(parameter));
private DateTimeUC GenerateDateTime(SomeParameter parameter)
{
    DateTimeUC uc = new DateTimeUC();
    uc.ID = parameter.Name;
    return uc;
}

Mais lorsque je rends la page, DateTimeUC ne restitue rien. J'ai vérifié comme ça:

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 est vide et Controls.Count est égal à 0. Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Vous devez utiliser la méthode LoadControl (& your; user_control_app_relative_path.ascx ")) à la place de " DateTimeUC uc = new DateTimeUC ();

Autres conseils

J'ai rencontré ce problème moi-même il y a un certain temps. Vous devez utiliser la méthode LoadControl (). Consultez cette page dessus.

Je pense que vous souhaitez ajouter votre contrôle au formulaire & amp; de la page. pas la forme elle-même.

votre code:

Controls.Add( GenerateDateTime(parameter) );

essayez:

Page.Form.Controls.Add( GenerateDateTime(parameter) );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top