Les contrôles n'apparaissent pas sur le contrôle utilisateur créé dynamiquement
-
02-07-2019 - |
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?
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) );