2008-09-24 32 views
5

Ich habe Steuer Benutzer DateTimeUC benannt, die zwei Textfelder auf seinem Markup hat:Steuerelemente erscheinen nicht auf dynamisch erstellte Benutzersteuer

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

Ich schaffe dynamisch diese Steuerung in einem 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 rende, rendert DateTimeUC nichts. Ich überprüfte es so:

s ist leer und Controls.Count ist 0. Was mache ich falsch?

Antwort

9

Sie müssen die LoadControl("your_user_control_app_relative_path.ascx") Methode anstelle von "DateTimeUC uc = new DateTimeUC();"

+0

worden ganzen Tag nach einer Antwort auf diese suchen. Vielen Dank! – McMuttons

+0

Wie kann ich ein Benutzersteuerelement laden, das in einer DLL eingebettet ist? – Zolomon

+0

@Zolomon: Sie benötigen die Datei * .ascx. Die * .ascx-Datei enthält das asp.net-Markup, das für die automatisch generierte Klasse verwendet wird. Die automatisch generierte Klasse erbt von der Klasse in Assembly (* .dll). – TcKs

0

Ich habe dieses Problem vor einiger Zeit selbst erlebt. Sie müssen die LoadControl() -Methode verwenden. Schauen Sie sich this page darauf an.

0

Ich denke, Sie möchten Ihr Steuerelement in das Formular & der Seite nicht das Formular selbst hinzufügen.

Code:

Controls.Add(GenerateDateTime(parameter)); 

Versuch:

Page.Form.Controls.Add(GenerateDateTime(parameter)); 
Verwandte Themen