2010-05-13 8 views
5

Dire que je suis en train de créer une zone de texte dans le code-behind d'une page comme ceci:Appliquer la peau à un contrôle créé programatically

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

et dans mon dossier de peau, j'ai ceci:

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

Pourquoi la peau n'est pas appliquée sur le contrôle. Si je déclare le contrôle dans ma page aspx cela fonctionne bien, mais si j'essaie de le faire par programme cela ne fonctionne pas ...

Une solution?

Merci

Luis

Répondre

0

réponse est ici: https://connect.microsoft.com/VisualStudio/feedback/details/558947/apply-skin-to-a-control-created-programatically

« Le système thématisation ASP.NET a des restrictions sur le moment où les différentes informations de thème peut être définir la propriété thématique peut être définie lors PreInit Cependant StyleSheetTheme est traité au moment de la compilation et donc.. ne peut pas remplacer par programmation dans un événement comme PreInit. "

1

Est-il utile si vous placez votre code dans l'événement onPreInit? Vous devrez peut-être l'ajouter ultérieurement à l'espace réservé, mais vous pouvez créer le contrôle à cet endroit.

+0

Selon Microsoft, il devrait fonctionner: http://msdn.microsoft.com/en-us/library/tx35bd89.aspx mais j'essayé sans succès :( – Luis

+0

Je viens de remarquer que si je mets la En plus de la réponse de Dbuggy, ceci vient de msdn: "La méthode ApplyStyleSheetSkin définit les propriétés de style sur le contrôle en fonction des propriétés de la peau définies dans la propriété de thème de la page, mais pas de StyleSheetTheme ... – Luis

6

Je sais que c'est un vieux fil. Mais je veux partager ce que je devais faire dans une situation similaire. Ce qui m'a aidé est d'utiliser ApplyStyleSheetSkin (this) après avoir créé le contrôle.

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

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

L'habillage appliqué est soit l'habillage par défaut du contrôle soit l'habillage spécifié dans la propriété SkinID La méthode ApplyStyleSheetSkin est appelée par ASP.NET pour les contrôles déclaratifs placés sur une page Vous devez appeler la méthode ApplyStyleSheetSkin sur tous les contrôles créé par programmation au moment de l'exécution pour les enveloppes de feuille de style à appliquer au contrôle . Les thèmes sont appliqués automatiquement. " – Brabbeldas