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

JSF Java Discussion :

[PrimeFaces] Coloration des lignes de DataTable


Sujet :

JSF Java

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 71
    Points : 48
    Points
    48
    Par défaut [PrimeFaces] Coloration des lignes de DataTable
    Bonjour,
    je voudrais colorier une DataTable de Primefaces avec plus de deux couleur et je ne vois pas comment faire.L'exemple suivant inspiré par :
    http://www.primefaces.org/showcase/u...leColoring.jsf :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <html xmlns:ui="http://java.sun.com/jsf/facelets"
    	xmlns="http://www.w3c.org/1999/xhtml"
    	xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:c="http://java.sun.com/jstl/core"
    	xmlns:p="http://primefaces.org/ui">
    <ui:composition template="../../templates/consoles-admin/template.xhtml">
    	<ui:define name="pagecontent">
    		<p:panel>
    			<h:form id="form">
     
     
     
    				<p:dataTable id="table" var="car" value="#{tableBean.carsSmall}"
    					rowStyleClass="#{car.year le 1980 ? 'highlightTableRowGray' : 'highlightTableRowGreen'}">
    					<p:column>
    						<f:facet name="header">  
                        Model  
                </f:facet>
    						<h:outputText value="#{car.model}" />
    					</p:column>
     
    					<p:column>
    						<f:facet name="header">  
                        Year  
                </f:facet>
    						<h:outputText value="#{car.year}" />
    					</p:column>
     
    					<p:column>
    						<f:facet name="header">  
                        Manufacturer  
                </f:facet>
    						<h:outputText value="#{car.manufacturer}" />
    					</p:column>
     
    					<p:column>
    						<f:facet name="header">  
                        Color  
                </f:facet>
    						<h:outputText value="#{car.color}" />
    					</p:column>
    				</p:dataTable>
     
    			</h:form>
    		</p:panel>
    	</ui:define>
    </ui:composition>
    </html>
    Avec le CSS suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    .highlightTableRowGreen {
       background-color: green !important;
          font-weight: bold;
    }
     
    .highlightTableRowRed {
       background-color: red !important;
          font-weight: bold;
    }
     
    .highlightTableRowGray {
       background-color: gray !important;
          font-weight: bold;
    }
    Marche très bien.Ce que je voudrais faire c'est attribuer une couleur différente selon un critère qui peut avoir 3 valeurs distinctes.

  2. #2
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Salut,

    une solution est que ce soit codé par une méthode d'un ManagedBean, par exemple en scope application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rowStyleClass="#{colorSelectorBean.computeColor(car.year)}"

    et ton MB :

    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
    18
    19
    20
    21
     
    @ManagedBean
    @ApplicationScoped
    public class ColorSelectorBean 
    {
       public String computeColor(int year) 
       {
          if (year < 1980) 
          {
            return "highlightTableRowGray";
          } 
          else if (year < 1990)
          {
            return "highlightTableRowRed";
          }
          else 
          {
             return "highlightTableRowGreen";
          }
       } 
    }
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 71
    Points : 48
    Points
    48
    Par défaut
    Sa marche nickel.
    Merci fxrobin

  4. #4
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    ravi d'avoir pu aider
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Je suis débutante, et je voudrais aussi colorer des lignes d'une dataTable. J'ai fait une fonction dans un bean , ça va bien à l'intérieur et entre dans les if mais la couleur ne s'affiche pas.
    J'ai pris quelques lignes du fichier css décrit au-dessus. Je pense qu'il me manque un lien entre mon ficher css (peut-être incomplet) et mon fichier xhtml.
    Quelqu'un peut-il m'aider?

    Merci d'avance à tous

  6. #6
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut ou as tu mis ton css? plus simple peux-tu envoyer le code qui ne marche pas?

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Mon css est dans WebContent/themes/styles.css

    Ma méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public String couleurLigne(int niveau){
    		System.out.println("entre dans couleurDataTable");
    		if (niveau==0){
    			System.out.println("entre dans if");
    			return "highlightTableRowGray";
    		}else{
    			System.out.println("entre dans else");
     
    			return null;
    		}
    	}
    Merci d'avance

  8. #8
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    dans ton fichier .xhtml tu dois mettre entre les balises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <head>
      <link rel = "stylesheet" href="./themes/styles.css" type="text/css" />
    </head>

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci pour la réponse , enfin de compte j'avais cette ligne mais avec un S à la place d'un s dans stylesheet.

    Par contre le gras reste mais la couleur apparait qu'une seconde quand on charge

  10. #10
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    peux-tu envoyer ton fichier .xhtml?

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Voici le moment où j'appelle la fonction


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <p:dataTable var="articles" id="dataTable"
    				value="#{duplicationDevisBean.mesArticlesDevis}"
    				style="width:1035px;" editable="true"
    				rowStyleClass="#{couleurDataTableBean.couleurLigne(articles.niveau)}">

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SSRS][2k5]Coloration des lignes alternativement
    Par Reskibil dans le forum SSRS
    Réponses: 4
    Dernier message: 01/09/2017, 11h48
  2. [JTable] coloration des lignes d'une JTable
    Par MathiasM dans le forum Composants
    Réponses: 3
    Dernier message: 22/06/2009, 10h19
  3. Colorer des lignes spécifiques du datagridview
    Par abbd dans le forum Windows Forms
    Réponses: 8
    Dernier message: 09/06/2008, 15h08
  4. Coloration des lignes d'un tableau OnClick
    Par Camomille dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/01/2008, 18h02
  5. Coloration des lignes une sur deux
    Par ESVBA dans le forum Word
    Réponses: 2
    Dernier message: 06/07/2007, 14h39

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