Bonjour,
J'aimerais savoir comment mettre en evidence un element selectionne dans
un treview (dans strutslayout); lorsque je clique sur celui-ci.
Merci d'avance
Bonjour,
J'aimerais savoir comment mettre en evidence un element selectionne dans
un treview (dans strutslayout); lorsque je clique sur celui-ci.
Merci d'avance
Le contenu de ton treeview est-il défini dans une jsp ou dans une Action ?
Dans une action.
Tu peux par exemple passer en paramètre de chacune des Actions qui s'exécute lors d'un clic sur un des noeuds du treeview le nom du noeud.
Ensuite, il faut tester si le nom du noeud est bien égal à celui sur lequel on a cliqué et dans ce cas appliquer un style pour changer la couleur.
Ceci implique bien sûr de re-éxecuter le code qui constitue le treeview à chaque clic sur un noeud :
A voir si tu peux l'adapter à ton cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 String noeudSelecte = request.getParameter("noeudSelecte") ; ... MenuComponent menuComponent = new MenuComponent() ; String title = "titreDuNoeud1" ; menuComponent.setTitle(title) ; menuComponent.setLocation("pathAction.do?noeudSelecte="+title) ; if ( title.equals(noeudSelecte)) { menuComponent.setStyle("background-color: blue;") ; } ...![]()
Merci pour le truc ça marche bien.
Ci-dessous une solution sans avoir besoin de re-éxécuter le code qui constitue le treeview, donc sans aller/retour serveur.
Dans l'Action, il faut utiliser la méthode setOnClick pour permettre l'appel d'un script Javascript qui modifie la couleur du background du noeud sur lequel on a cliqué :
et dans la jsp, ajouter les fonctions Javascript suivantes (grandement inspirées d'un exemple donné dans l'appli de demo NewsReader de Struts-Layout) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part menuComponent.setOnClick("javascript:setColor(this,'blue')") ;
Merci à OButterlin de m'avoir aiguillé sur le setOnClick et pour le petit coup de pouce en Javascript.
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 <script> function setColor(row, color) { var parent = row.parentNode.parentNode; var oldRow; if (parent.stdLayoutOldRow) { oldRow = parent.stdLayoutOldRow; } var elements = row.childNodes; setCellColor(elements, color); if (oldRow && oldRow!=row) { elements = oldRow.childNodes; setCellColor(elements, ""); } parent.stdLayoutOldRow = row; } function setCellColor(elements, color) { for (i=0; i < elements.length; i++) { if (elements[i].nodeName=="a" || elements[i].nodeName=="A") { elements[i].style.backgroundColor = color; } } } </script>![]()
Partager