Bonjour je voulais savoir si il est techniquement possible de permettre à l'utilisateur de sélectionner différente feuilles de styles (CSS) par exemple à l'aidre de radio bouton.. ?
Si oui comment faire ?
Merci d'avance de votre aide !
Bonjour je voulais savoir si il est techniquement possible de permettre à l'utilisateur de sélectionner différente feuilles de styles (CSS) par exemple à l'aidre de radio bouton.. ?
Si oui comment faire ?
Merci d'avance de votre aide !
Tu as accès à la propriété définissant la feuille de style appliquée à la page.
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.Page.StyleSheetTheme = "StyleSheet.css";
Euh en fait... tu aurais la version VB.NET ?
Excuse moi, j'ai été un peu trop vite dans mes recherches.
Voici la bonne solution: Dans ta page aspx, tu as la balise suivante représentant le feuille de style associée.
Afin que tu puisses jouer sur les propriétés de cette balise, il suffit de rajouter un id.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <link href="titi.css" rel="stylesheet" type="text/css" />
Ensuite, dans ton code, tu peux faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <link href="titi.css" rel="stylesheet" type="text/css" id="stylesheet" />
Code : Sélectionner tout - Visualiser dans une fenêtre à part stylesheet.Href = "dark.css"
Ok donc j'ai rajouter l'id dans le code HTML de ma page, j'ai contrôlé ca corresond bien a ce que tu as indiqué maintenat.
Mais par contre dans mon code que je tape :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Me.page.stylesheet ou stylesheet
il me dit Name 'stylesheet' is not declared !
Mais je dois bien avoué que je ne sais pas bien où ni comment le déclarer !?
J'avoue que je n'ai rien fait de plus que ce que je t'ai expliqué
Montre toujours le code html et le code vb.net correspondant au changement de stylesheet, on sait jamais.
Je sais pas... tu ne dois pas inclure une classe ou qqch tu dois bien le déclarer qq part non ?
stylesheet ? il s'est déclaré tout seul en mettant id="stylesheet" dans la balise link... Essaye en ajoutant runat="server".Envoyé par Irish
Mais pour moi, ça a fonctionné sans ça.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <link href="titi.css" rel="stylesheet" type="text/css" id="stylesheet" runat="server" />
Je demandais ca car par exemple quand tu ajoute un bouton (bouton1) ou une text box dans ta page mypage.aspx, en suite sur mypage.aspx.vb tu trouve la definition :
Protected WithEvents bouton1 As System.Web.UI.WebControls.Button
et c'est pour ca que je me demandais si tu devais aussi referencer qqch ?
j'ai trouvé la classe suivante :
Dim style As New System.Web.UI.WebControls.Style
qui me permet en suite d'utiliser la méthode suivante :
style.CssClass.Replace("old style", "new style")
Par contre je sais pas comment faire le liens avec le style déclarer dans le <Link>... est-ce que du coup il faut procéder différement ?
Si tu a mis :
Alors le lien est tout trouvé
Code : Sélectionner tout - Visualiser dans une fenêtre à part <link Id=Style runat=server....
Bon désolé mais j'ai vraiment de la peine...
Alors au niveau page.aspx j'ai :
Au niveau de la page.aspx.vb
Code : Sélectionner tout - Visualiser dans une fenêtre à part <LINK id="Style" href="../StylesOrange.css" type="text/css" rel="stylesheet">
J'ai tout d'abord la déclaration d'une variable style :
Et en suite dans mon code .
Code : Sélectionner tout - Visualiser dans une fenêtre à part Protected WithEvents style As New System.Web.UI.WebControls.Style
Code : Sélectionner tout - Visualiser dans une fenêtre à part style.CssClass.Replace(style.CssClass, "StylesBleu.css")
Mes fichier css s'appelant StylesOrange.css et StylesBleu.css et se trouvant à la racine du projet
Mais cela fonctionne pas, tout d'abord style.CssClass me rend une valeur vide et si je triche en indiquant "StylesOrange.css" à la place, rien ne se passe non plus.
PS Je n'ai pas mis le runnat="Server" car chaque fois le server me retourne une parse erreur lorsque j'essai d'afficher la page !
Apres un peu de recherches voila ma solution pour faire ce que tu veux :
Tu cree a la racine un repertoire "App_Themes"
Dedans tu cree un repertoire "bleu"
Dans ce repertoire, tu met ta feuille de style
ensuite tu met dans ton code (désolé C# ) :
si tu veux un autre theme , tu cree un autre repertoire dans le repertoire "App_Themes".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 protected override void OnPreInit(EventArgs e) { Page.Theme = "bleu"; base.OnPreInit(e); }
Apres tu n'as plus qu'a gérer tout ca pour changer de themes dans le
onpreinit..
En esperant t'avoir un peu aidé..
Je te remercie, malheureusement ca m'aide pas des masses dans le sens ou il n'y pas de paramètre "Theme" pour la classe Page en VB.Net donc... je vois pas trop comment faire...
Bon bon... Je viens de refaire le projet en vb.net donc maintenant plus d'excuses.
La différence, c'est qu'on est obligé de mettre runat="server" dans la balise html <style></style>
Alors pour être sûr que ça fonctionne chez toi car tu as l'air de te prendre la tête, voici toutes les sources :p
s1.css
s2.css
Code : Sélectionner tout - Visualiser dans une fenêtre à part body { background-color: Red; }
Default.aspx
Code : Sélectionner tout - Visualiser dans une fenêtre à part body { background-color: Black; }
Default.aspx.vb
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> <link href="s1.css" rel="stylesheet" type="text/css" id="test" /> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Partial Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load test.Href = "s2.css" End Sub End Class
Ca m'a l'air parfais, je vais tester ca d'ici ce soir et je te reconfirme !!!
Merci beaucoup pour ta patience en tout cas.
Alors j'ai recopier ton code tel quel ou presque, car moi j'utilise VB donc la déclaration du language dans le code html de ta page ne peut pas être C#... et ben résultat moi je te dis qu'avec C# ca fonctionne très certainement mais pas en vb !!! Il me souligne toujours ma variable en disant qu'elle n'est pas déclarée !!!!
Tu n'utilises pas le code behind pour écrire ton code ?
si mais dans le code plus haut c'est un codefile .cs et moi j'utilise codebehind vb
Et j'ai recopier exactement ce qui était plus haut en remplacant
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
C# par VB et
CodeFile="Default.aspx.cs" par CodeBehind="Default.aspx.vb" !!
Et du coup dans la page .aspx.vb (soit le code behind) il me dit que la variable test.Hrf n'as pas été déclarée....
Partager