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 :

[RichFaces] Surlignage d'une ligne d'un datatable


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut [RichFaces] Surlignage d'une ligne d'un datatable
    Bonjour,

    J'ai créé un datatable où je récupère la ligne sélectionnée. Cependant, sans le surlignage de la ligne lors du passage de la souris, ce n'est pas très joli visuellement.

    Quelqu'un aurait-il la solution pour permettre cela ?
    Si je pouvais aussi avoir l'apparence de la souris de changée en une main lors du passage sur une ligne ça serait sympa.

    Merci,
    Fafhrd

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Change le style CSS..

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 63
    Par défaut
    essaye de mettre ta coloumn entre la balise span
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <span style="cursor:pointer" >X</span>

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <span style="cursor:pointer" >
           <rich:column style="width:40%;" id="carnetAdressesNom">
                 <f:facet name="header">
                       <h:outputText value="Nom et prénom" />
                 </f:facet>
                 <h:outputText value="#{contactItem.nom}" />
           </rich:column>
    </span>
    Ne fonctionne pas... je n'ai rien qui pointe sur la colonne lorsque mon curseur passe dessus.

    Je ne vois pas non plus comment je peux faire du css lorsque la souris passe sur la cellule.

    Cependant, j'ai découvert qu'avec <a4j:support event="onRowMouseOver" /> je pouvais effectuer une action lorsque je passe sur la ligne avec ma souris... reste à voir si je peux l'exploiter pour changer la css :s.

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    tu as mieux en utilisant jQuery:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <rich:jQuery selector="#table tr"
    query="mouseover(function(){jQuery(this).addClass('active-row')})" />
    <rich:jQuery selector="#table tr"
    query="mouseout(function(){jQuery(this).removeClass('active-row')})" />

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut
    Ca a l'air interressant.

    J'ai défini ma classe CSS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .active-row {
        background: #FF5544;
        cursor: pointer;
    }
    J'ai ajouté ces 2 instructions dans mon <rich:dataTable>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <rich:jQuery selector="#table tr"
         query="mouseover(function(){jQuery(this).addClass('active-row')})" />
    <rich:jQuery selector="#table tr"
         query="mouseout(function(){jQuery(this).removeClass('active-row')})" />
    Mais je n'ai aucune réaction quand je passe la souris sur ma ligne... Est-ce que j'ai fais une erreur ? (j'ai quelques lacunes en css, c'est peut-être à cause de ça)

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    #table correspond à l'id donnée à la dataTable.

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <rich:dataTable value="#{selectionnerContactBean.dataModel}" var="contactItem"
          width="100%" columnClasses=",columns,columns,columns" rows="20"
          id="table" rowKeyVar="row">
    Pourtant si... id="table". Ou alors il y a une subtilité qui manque et qu'il faut ajouter ?

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut
    Ok j'ai trouvé. En fait, les instructions <rich:jQuery> doivent être définies après l'élément et pas dans l'élément.
    Donc je les ai appellé juste après avoir cloturé la balise de mon <rich:dataTable> et ça a marché niquel.

    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
    <rich:dataTable value="#{selectionnerContactBean.dataModel}" var="contactItem"
              width="100%" columnClasses=",columns,columns,columns" rows="20"
              id="table" rowKeyVar="row">
         <rich:column style="width:40%;" id="carnetAdressesNom">
                <f:facet name="header">
                        <h:outputText value="Nom et prénom" />
                 </f:facet>
                <h:outputText value="#{contactItem.nom}" />
          </rich:column>
          <f:facet name="footer">
                <rich:datascroller ajaxSingle="false"/>
          </f:facet>
    </rich:dataTable>
    <rich:jQuery selector="#table tr"
           query="mouseover(function(){jQuery(this).addClass('active-row')})" />
    <rich:jQuery selector="#table tr"
           query="mouseout(function(){jQuery(this).removeClass('active-row')})" />
    Cependant, il me reste un dernier soucis : Les lignes surlignées prennent en compte le header et le footer...
    Existe-t-il un moyen pour ne pas prendre en compte ces 2 lignes là ?

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut
    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
     
    <rich:dataTable value="#{selectionnerContactBean.dataModel}" var="contactItem"
              width="100%" columnClasses=",columns,columns,columns" rows="20"
              id="table" rowKeyVar="row" rowClasses="base-row">
         <rich:column style="width:40%;" id="carnetAdressesNom">
                <f:facet name="header">
                        <h:outputText value="Nom et prénom" />
                 </f:facet>
                <h:outputText value="#{contactItem.nom}" />
          </rich:column>
          <f:facet name="footer">
                <rich:datascroller ajaxSingle="false"/>
          </f:facet>
    </rich:dataTable>
    <rich:jQuery selector="#table tr.base-row"
           query="mouseover(function(){jQuery(this).addClass('active-row')})" />
    <rich:jQuery selector="#table tr.base-row"
           query="mouseout(function(){jQuery(this).removeClass('active-row')})" />
    Hé voila j'ai trouvé la solution. La technique c'est de mettre une class de base pour les lignes et de se limiter à ces classes dans le jQuery.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    .active-row {
        background: #FF5544;
        cursor: pointer;
    }
     
    .base-row {
     
    }

  11. #11
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    et si il y'a deux styles pour les lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    selector="#table tr.paire-row,#table tr.impaire-row"

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

Discussions similaires

  1. Réponses: 51
    Dernier message: 23/09/2009, 18h39
  2. Réponses: 17
    Dernier message: 10/09/2009, 19h08
  3. Réponses: 5
    Dernier message: 12/08/2009, 15h59
  4. Récupérer une ligne active rich:dataTable
    Par kookee dans le forum JSF
    Réponses: 3
    Dernier message: 26/03/2009, 15h12
  5. Ajouter une ligne a un DataTable
    Par LaDeveloppeuse dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/05/2007, 15h20

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