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?

War es hilfreich?

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) );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top