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

Struts 1 Java Discussion :

[Struts-Layout] style collection lignes


Sujet :

Struts 1 Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [Struts-Layout] style collection lignes
    Bonjour,

    Je n'arrive pas à changer la couleur mes lignes en utilisant le Layout:collection et les attribut styleClass="tabs1" et styleClass2="tabs2"

    Le problème c'est que le style est posé automatiquement sur la balise TD alors qu'il faudrait qu'il soit sur TR.

    Est-ce que vous avez des suggestions ?

    Voici un exemple de ma fauille de style
    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
    .tabs1 {
    	border-bottom: 6px #ddd solid;
    }
    .tabs1 th {
    	border-right: 1px solid #333;
    	background-color: #ddd;
    	color: #fff;
    	border-left: 1px solid #fff;
    }
     
    .tabs1 td {
    	background-color: #999;
    	border-bottom: 1px solid #fff;
    	border-right: 1px solid #fff;
    	border-left: 1px solid #fff;
    }
     
     
     
    .tabs2 {
    	border-bottom: 6px #ddd solid;
    }
    .tabs2 th {
    	border-right: 1px solid #333;
    	background-color: #0099CC;
    	color: #fff;
    	border-left: 1px solid #fff;
    }
     
    .tabs2 td {
    	background-color: #0033FF;
    	border-bottom: 1px solid #fff;
    	border-right: 1px solid #fff;
    	border-left: 1px solid #fff;
    }

  2. #2
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Essaie comme ceci :
    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
    TABLE.tabs1 {
    	border-bottom: 6px #ddd solid;
    }
    TH.tabs1 {
    	border-right: 1px solid #333;
    	background-color: #ddd;
    	color: #fff;
    	border-left: 1px solid #fff;
    }
     
    TD.tabs1 {
    	background-color: #999;
    	border-bottom: 1px solid #fff;
    	border-right: 1px solid #fff;
    	border-left: 1px solid #fff;
    }
     
    TABLE.tabs2 {
    	border-bottom: 6px #ddd solid;
    }
    TH.tabs2 {
    	border-right: 1px solid #333;
    	background-color: #0099CC;
    	color: #fff;
    	border-left: 1px solid #fff;
    }
     
    TD.tabs2 {
    	background-color: #0033FF;
    	border-bottom: 1px solid #fff;
    	border-right: 1px solid #fff;
    	border-left: 1px solid #fff;
    }
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci.
    Est-ce que tu sais également comment changer facilement la couleur de la ligne sur l'évenement onRowMouseOver ?

  4. #4
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Ben non, je ne sais pas.
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut merci quand même !
    J'ai une petite idée sur le principe que tu m'as donné. Je vais essayer
    onRowMouseClick="this.className='style2'"; et définir un TR.style2 dans ma feuille de style. On verra bien.

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 54
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    J'aimerais savoir aussi comment on utilise onRowMouseOver et onRowMouseOut si quelqu'un peu m'aider?

    Comme la fonction l'indique, je veux que la ligne change de couleur quand on passe dessus avec la souris...

    Voila ma collection, elle est dans un popup :

    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
    <layout:popup styleClass="DCPopup" key="" styleId="myPopup">
    				<bean:define id="dcLots" name="dynaCommandesForm" property="dcLots" scope="session"/>	
     
    						<layout:pager maxPageItems="25">
    					    <layout:collection name="dcLots" onRowMouseOver="" onRowMouseOut="" styleClass="DCtableau" onRowClick="" >
     
    							<layout:collectionItem sortable="true" title="lot.num" property="num" url="/dc-ventesuroffre-server/Commande.do?method=listlot&borne1=" param="lotId" />
    						    <layout:collectionItem title="lot.lib"    			property="lib"/>
    						    <layout:collectionItem title="lot.prix_depart"    	property="prix_depart"/>
     
    					    </layout:collection>
    					    </layout:pager>
     
    				<layout:button styleClass="DCinput" onclick="closeStrutsLayoutPopup('myPopup');">Fermer</layout:button>
    			</layout:popup>
    et voila mon css pour DCtableau:

    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
    .DCtableau{
     
    	background-color: #f5f5f5;
    	font : 8pt verdana, arial, helvetica, sans-serif;
    	font-size : 8pt;
    }
    TABLE.DCtableau{
    	text-align:right;
    	font:8pt Arial, Helvetica, sans-serif;
    	background-color: #000000;
    }
     
    TH.DCtableau TR TH{
     
    	text-align:center;
    	font-weight:bold;
    	background-color:#000000;/*c3c3c3*/
    	vertical-align:middle;
    	font-size:8pt;
    	color:#E9C66D;
    }
     
    TH.DCtableau{
    	padding:5px;
    	border:1px solid white;
    	text-align:center;
    	font-weight:bold;
    	background-color:#000000;/*c3c3c3*/
    	vertical-align:middle;
    	font-size:8pt;
    	color:#E9C66D;
    }
     
    TD.DCtableau{
    	PADDING-LEFT:10px;
    	PADDING-RIGHT:10px;
    	color:#000000;
    	font-weight:bold;
    	text-align:center;
    	font-size:8pt;	
     
    }
    Si quelqu'un à une idée ce serait super

    Cordialement

  7. #7
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    tu as ça:
    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
    50
    51
    52
    /**
                 * Fixe la couleur d'une ligne
                 *
                 * @param row                la ligne dont on veut changer la couleur.
                 * @param color              nouvelle couleur
                 * @param dontChange ligne dont il ne faut pas changer la couleur
                 */
    		function setColor(row, color, dontChange) {
    			var parent = row.parentNode.parentNode;
    			var oldRow;
     
    			if (parent.stdLayoutOldRow) {
    				oldRow = parent.stdLayoutOldRow;	
    			}
     
    			var elements = row.childNodes;		
     
    			if (shouldNotChange(elements, dontChange)) {
    				return;
    			}
     
    			setCellColor(elements, color);
     
    			if (oldRow && oldRow!=row) {
    				elements = oldRow.childNodes;
    				setCellColor(elements, "");
    			}
     
    			parent.stdLayoutOldRow = row;
    		}
     
    		function shouldNotChange(elements, dontChangeColor) {
    			var i = 0;
    			var element = elements[i];
    			while (element.nodeName!="td" && element.nodeName!="TD") {
    				i++
    				element = elements[i];
    			}
    			var currentBg = element.style.backgroundColor;
    			if (currentBg && currentBg==dontChangeColor) {
    				return true;
    			}			
    			return false;
    		}
     
    		function setCellColor(elements, color) {
    			for (i=0; i < elements.length; i++) {
    				if (elements[i].nodeName=="td" || elements[i].nodeName=="TD") {
    					elements[i].style.backgroundColor = color;
    				}
    			}
    		}
    sur l'un exemple fourni avec le framework. Tu peux l'utiliser sur les deux evenements onClick et onRowMouse... mais ça garde change la couleur de ta dernière ligne survolée. Perfectible.

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Sinon, tu peux t'inspirer de ceci
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    <html>
    <head>
     
    <style>
    .ligne0{
        background : #a0a0a0;
        color:#000000;
        font-size:12pt;
        text-align:center;
        border-style:solid;
        border-width:1px;
        border-color:#f0f0f0 #909090 #909090 #f0f0f0;    
    }
    .ligne1{
        background : #f0f0f0;
        border-style:solid;
        border-width:1px;
        border-color:#f0f0f0 #909090 #909090 #f0f0f0;    
    }
    .ligne2{
        background : #e0e0e0;
        border-style:solid;
        border-width:1px;
        border-color:#f0f0f0 #909090 #909090 #f0f0f0;    
    }
    .selected{
        background:#00f000;
        color:#000090;
        border-style:solid;
        border-width:1px;
        border-color:#f0f0f0 #909090 #909090 #f0f0f0;    
    }
    </style>
     
    <script>
    var prvClass = null;
     
    function mouseOver(obj)
    {
        prvClass = new Array(obj.cells.length);
        for (var i = 0; i < obj.cells.length; i++)
        {
            prvClass[i] = obj.cells[i].className;
            obj.cells[i].className = "selected";
        }
    }
     
    function mouseOut(obj)
    {
        for (var i = 0; i < obj.cells.length; i++)
        {
            obj.cells[i].className = prvClass[i];
        }
    }
    </script>
     
    </head>
     
    <body> 
     
    <table id="tbl" cellpadding="0" cellspacing="0" width="500">
    <thead>
        <tr>
        <th class="ligne0">Col 1</th>
        <th class="ligne0">Col 2</th>
        <th class="ligne0">Col 3</th>
        </tr>
    </thead>
    <tbody>
        <col span="1" width="50"/>
        <tr onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">
            <td class="ligne1"><input type="checkbox" name="selectedItem" value="1"/></td>
            <td class="ligne1" style="color:green;">ligne 1</td>
            <td class="ligne1"><a href="javascript:alert('ligne1')">un lien</a></td>
        </tr>
        <tr onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">
            <td class="ligne2"><input type="checkbox" name="selectedItem" value="2"/></td>
            <td class="ligne2">ligne 1</td>
            <td class="ligne2"><a href="javascript:alert('ligne2')">un lien</a></td>
        </tr>
        <tr onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">
            <td class="ligne1"><input type="checkbox" name="selectedItem" value="1"/></td>
            <td class="ligne1" style="color:green;">ligne 1</td>
            <td class="ligne1"><a href="javascript:alert('ligne3')">un lien</a></td>
        </tr>
        <tr onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">
            <td class="ligne2"><input type="checkbox" name="selectedItem" value="2"/></td>
            <td class="ligne2">ligne 1</td>
            <td class="ligne2"><a href="javascript:alert('ligne4')">un lien</a></td>
        </tr>
    </tbody>
    </table>
     
    </body>
    </html>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 54
    Points : 21
    Points
    21
    Par défaut
    Merci, mais il y a pas un truc plus simple du genre (je dis n'importe quoi) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onRowMouseOver="this.style.backgroundColor=red" onRowMouseOut="this.style.backgroundColor=blue"
    Si il existe des fonctions de ce genre pour layout:collection, il doit bien y avoir un truc plus simple non ?

    Merci pour votre aide

    Cordialement

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Le problème vient du fait qu'appliquer un style à la balise <tr> n'aura pas de répercussion sur ses <td>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 54
    Points : 21
    Points
    21
    Par défaut
    ouep j'ai vu ça dans le code source que ça me génère.

    Donc en gros ces deux fonctions servent à rien si ?

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Ben si, ça sert à déclencher une fonction javascript au survol...
    A toi de la concevoir correctement... en fonction de tes besoin...

    On pourrait imaginer un appel AJAX pour récupérer des informations complémentaires... ou autre...

    Bref, ça peut servir
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 54
    Points : 21
    Points
    21
    Par défaut
    oué ok.

    Du coup j'ai une autre question, c'est pour onRowClick, je suppose que c'est le même principe que les deux autres fonctions...

    j'aimerais récupérer la valeur de l'ID lorsque je clique sur la ligne, j'avais trouvé un moyen en faisant ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <layout:collection name="dcLots"  styleClass="DCtableau"  >
    <layout:collectionItem title="lot.num" property="num" url="/dc-ventesuroffre-server/Commande.do?method=listlot&borne1=" param="lotId" />
    [...]

    Donc j'ai été tenté de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <layout:collection name="dcLots"   onRowClick="/dc-ventesuroffre-server/Commande.do?method=listlot&borne1" param="lotId" styleClass="DCtableau"  >
    <layout:collectionItem title="lot.num" property="num"   />
    Mais vu que le paramètre "param" n'est pas utilisé dans <layout:collection> je ne sais pas comment faire.

    Une idée?

  14. #14
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Là c'est plus compliqué.
    Il faudrait faire un méthode javascript qui irait extraire le lien dans la colonne 0 (si c'est la position du lien).
    Bref, un truc dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function processRowClick(evt)
    {
        var row = null;
        if (evt.target) row = evt.target;
        else row = event.srcElement;
        row = row.parentNode;
     
        var ar = row.cells[0].firstChild.getAttribute("href");
        window.location = ar;
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Essaie de passer l'id via une EL comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:collection name="dcLots" id="lot" onRowClick="/dc-ventesuroffre-server/Commande.do?method=listlot&borne1=${lot.lotId}" styleClass="DCtableau"  >
    Modératrice Java - Struts, Servlets/JSP, ...

Discussions similaires

  1. [Struts-Layout] datagrid sélection ligne
    Par khaoula_14_05 dans le forum Struts 1
    Réponses: 4
    Dernier message: 03/12/2008, 09h36
  2. struts layout : les collections
    Par mima_mine dans le forum Struts 1
    Réponses: 0
    Dernier message: 11/08/2008, 11h35
  3. [Struts-Layout] checkbox & collection
    Par vny dans le forum Struts 1
    Réponses: 9
    Dernier message: 08/06/2007, 11h42
  4. [Struts-Layout] Style des titres pour collection
    Par ahury dans le forum Struts 1
    Réponses: 1
    Dernier message: 04/06/2007, 16h29
  5. struts layout Deux collection: l'une dépend de l'autre
    Par kamaldev dans le forum Struts 1
    Réponses: 9
    Dernier message: 01/08/2006, 23h02

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