IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Ajout dynamique d'une feuille de style


Sujet :

ASP.NET

  1. #1
    Invité
    Invité(e)
    Par défaut Ajout dynamique d'une feuille de style
    Salut,

    J'aimerais savoir comment faire pour ajouter une feuille de style dynamiquement.
    J'ai essayé le code suivant mais cela ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                this.StyleSheetTheme = "styles/default/gerance.css";
            }
        }
    Cela me genère l'erreur suivante :

    La propriété styleSheetTheme ne peut pas être définie; remplacer la propriété à la place.
    Donc je pense que la propriété StyleSheetTheme est en lecture seule.
    Je pense qu'il y a une autre méthode pour charger dynamiquement une feuille de style.

    Merci de votre reponse.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je viens de vérifier sur msdn que la propriété StyleSheetTheme n'est pas en lecture seules seulement. On peut définir une valeur pour cette propriété.

    Quelqu'un peut-il m'aider svp.

  3. #3
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    La propriété StyleSheetTheme fonctionne d'une façon un peu spéciale.

    En fait, pour changer de css dynamiquement, tu dois utiliser les thèmes.

    Pour cela, tu crées le répertoire App_Themes dans le répertoire de ton application, tu y ajoute un répertoire par thème (par exemple, Test), et dans les répertoires, tu ajoutes ta feuille de style (par exemple test.css).

    Ensuite, dans ta page, tu surcharges la propriété StyleSheetTheme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    public override string StyleSheetTheme
        {
            get
            {
                return "Test";
            }        
        }
    Où Test est le nom du thème contenant la css que tu veux appliquer...

    A toi de modifier légèrement la logique de code ci-dessus pour que cela corresponde à ce que tu cherches.
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  4. #4
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2003
    Messages : 127
    Points : 92
    Points
    92
    Par défaut
    perso je n'utilise pas App_Theme !

    dans ma master page je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Page.Header.Controls.Add(new LiteralControl("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + Helpers.GetApplicationPath(this.Page) + "Themes/" + this.Page.Theme + "/CSS/Screen.css\" title=\"Default\" media=\"screen\" />"));
    tu peux remplacer Screen par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentPage.Request.AppRelativeCurrentExecutionFilePath
    pour ajouter que la css de ta page en cours pour éviter d'avoir des effet de bord d'une page à l'autre !

    ou mettre dans Screen les style commun et dans AppRelativeCurrentExecutionFilePath que les style particulier à ta page.



    j'espère que ça pourra te servir !

  5. #5
    Invité
    Invité(e)
    Par défaut
    Puis je savoir l'utilité de this.Page.Theme dans le LitteralControl svp.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bon problème résolu j'ai utilisé la méthode proposé par ALCINA mais avec une touche de simplicité. Puisque c'est rare de voir une feuille de style changer de dossier, alors je ne pense que la recherche du dossier où se trouve la feuille de style soit indispensable. Il faut noter aussi que la méthode de PongTen marche mais quand il y a plus simple mieux vaut la prendre.

    Voici le code que j'ai utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Page.Header.Controls.Add(new LiteralControl("<link href=\"styles/default/assistance.css\" rel=\"stylesheet\" type=\"text/css\" />"));
            }
        }

Discussions similaires

  1. Ajouter une feuille de style CSS
    Par FremyCompany dans le forum Contribuez
    Réponses: 6
    Dernier message: 07/03/2008, 17h27
  2. Création dynamique d'une feuille de style
    Par tom42 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 11/01/2008, 14h28
  3. Attribuer une feuille de style CSS à un objet crée dynamiquement
    Par Sergejack dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/10/2007, 10h23
  4. Réponses: 3
    Dernier message: 06/09/2007, 14h31
  5. Ajout dynamique d'un lien vers une feuille de style.
    Par maa dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/03/2007, 21h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo