Pregunta

Tengo un control de usuario llamado DateTimeUC que tiene dos cuadros de texto en su marcado:

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

Estoy creando dinámicamente este control en otro control de usuario:

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

Pero cuando renderizo la página, DateTimeUC no muestra nada.Lo comprobé así:

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á vacío y Controls.Count es 0.¿Qué estoy haciendo mal?

¿Fue útil?

Solución

Debes utilizar el LoadControl( "your_user_control_app_relative_path.ascx" ) método en lugar de "DateTimeUC uc = new DateTimeUC();"

Otros consejos

Yo mismo me encontré con este problema hace un tiempo.Necesita utilizar el método LoadControl().Verificar esta página en eso.

Creo que desea agregar su control al formulario de la página y no al formulario en sí.

tu codigo:

Controls.Add( GenerateDateTime(parameter) );

intentar:

Page.Form.Controls.Add( GenerateDateTime(parameter) );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top