2010-05-13 7 views
5

sagen, dass ich eine Textbox in dem Code-Behind von einer Seite wie diese erschaffe:Haut auftragen zu einer Kontrolle erstellt programmatisch

protected override void OnInit(EventArgs e) 
{ 
     base.OnInit(e); 
     TextBox test = new TextBox(); 
     test.SkinkId = "MySkin"; 
     placeHolder.Controls.Add(test); 
} 

und in meiner Haut Datei Ich habe diese:

<asp:TextBox 
    runat="server" 
    SkinId = "MySkin" 
    Width="400" 
/> 

Warum ist die Haut wird nicht auf die Kontrolle aufgebracht. Wenn ich das Steuerelement in meiner aspx-Seite deklariere, funktioniert es ok, aber wenn ich es programmatisch versuche, funktioniert es nicht ...

Irgendeine Lösung?

Dank

Luis

Antwort

0

Antwort ist hier: https://connect.microsoft.com/VisualStudio/feedback/details/558947/apply-skin-to-a-control-created-programatically

„Das System ASP.NET Thematisierung hat Einschränkungen, wann verschiedene Themeninformationen können eingestellt werden Die Theme-Eigenschaft während PreInit eingestellt werden kann, ist jedoch StyleSheetTheme bei der Kompilierung verarbeitet und so.. kann programmgesteuert in einem Ereignis wie PreInit nicht überschrieben werden. "

1

Hilft es, wenn Sie Ihren Code in das OnPreInit Ereignis platzieren? Möglicherweise müssen Sie sie später zum Platzhalter hinzufügen, aber Sie könnten dort das Steuerelement erstellen.

+0

Laut Microsoft sollte es funktionieren: http://msdn.microsoft.com/en-us/library/tx35bd89.aspx aber ich ohne Glück gerade versucht :( – Luis

+0

Ich habe gerade bemerkt, dass, wenn ich die eingestellte Seite's Theme-Eigenschaft funktioniert, aber nicht das StyleSheetTheme ... das muss ein Fehler sein ... – Luis

6

Ich weiß, das ist ein alter Thread. Aber ich möchte teilen, was ich in einer ähnlichen Situation tun musste. Es hat mir geholfen, ApplyStyleSheetSkin (this) zu verwenden, nachdem ich das Steuerelement erstellt habe.

protected override void OnInit(EventArgs e) 
{ 
    base.OnInit(e); 

    TextBox test = new TextBox(); 
    test.SkinkId = "MySkin"; 
    test.ApplyStyleSheetSkin(this); // <-- 
    placeHolder.Controls.Add(test); 
} 
+0

Als Ergänzung zu Dbuggy's Antwort kommt dies von msdn: "Die ApplyStyleSheetSkin-Methode legt Stileigenschaften für das Steuerelement basierend auf definierten Skin-Eigenschaften fest Ein Themenverzeichnis Das angewandte Skin ist entweder das Standardskin für das Steuerelement oder das in der SkinID-Eigenschaft angegebene Skin Die ApplyStyleSheetSkin-Methode wird von ASP.NET für deklarative Steuerelemente auf einer Seite aufgerufen Sie müssen die ApplyStyleSheetSkin-Methode für alle Steuerelemente aufrufen Programmgesteuert zur Laufzeit für Stylesheet-Skins erstellt, die auf das Steuerelement angewendet werden . Themenskins werden automatisch angewendet. " – Brabbeldas

Verwandte Themen