2008-09-24 14 views
5

tengo control de usuario llamado DateTimeUC que tiene dos cuadros de texto en su margen de beneficio:controles no aparecen en el control de usuario creada dinámicamente

<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 he comprobado como esto:

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?

Respuesta

9

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

+0

estado buscando una respuesta a esto todo el día. ¡Gracias! – McMuttons

+0

¿Cómo puedo cargar un control de usuario que está incrustado en un archivo DLL? – Zolomon

+0

@Zolomon: necesita el archivo * .ascx. El archivo * .ascx contiene el marcado asp.net que se utiliza para la clase autogenerada. La clase autogenerada hereda de la clase en ensamblado (* .dll). – TcKs

0

me encontré con este problema a mí mismo hace un tiempo. Necesita usar el método LoadControl(). Consulte this page en él.

0

creo que desea añadir a su control de la forma de la página & no la forma misma.

su código:

Controls.Add(GenerateDateTime(parameter)); 

intento:

Page.Form.Controls.Add(GenerateDateTime(parameter)); 
Cuestiones relacionadas