Kontrollen werden nicht auf dynamisch erstellte Benutzersteuerung
-
02-07-2019 - |
Frage
Ich habe die Kontrolle Benutzer DateTimeUC benannt, die zwei Textfelder auf seinem Markup hat:
<asp:TextBox ID="dateTextBox" runat="server"></asp:TextBox>
<asp:TextBox ID="timeTextBox" runat="server"></asp:TextBox>
Ich bin die Schaffung dynamisch diese Steuerung in einer anderen Benutzersteuerung:
Controls.Add(GenerateDateTime(parameter));
private DateTimeUC GenerateDateTime(SomeParameter parameter)
{
DateTimeUC uc = new DateTimeUC();
uc.ID = parameter.Name;
return uc;
}
Aber wenn ich die Seite machen, DateTimeUC macht nichts. Ich habe es wie folgt aus:
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 ist leer und Controls.Count ist 0. Was mache ich falsch?
Lösung
Sie müssen die LoadControl( "your_user_control_app_relative_path.ascx" )
Methode statt verwenden "DateTimeUC uc = new DateTimeUC ();"
Andere Tipps
Ich lief in dieses Problem eine Weile mich zurück. Sie müssen die Loadcontrol () -Methode verwenden. Schauen Sie sich dieser Seite darauf.
Ich glaube, Sie wollen Ihre Steuerung auf die Seite des Formulars hinzufügen und somit nicht das Formular selbst.
Ihr Code:
Controls.Add( GenerateDateTime(parameter) );
Versuch:
Page.Form.Controls.Add( GenerateDateTime(parameter) );