Hello,
J'ai construit une table dans laquelle je veux activer un menu contextuel quand je clique sur une ligne de cette table avec un clic droit.
Pour créer ce fameux menu, deux solutions :
1ère solution :
Ici on attache le menu directement à la table en précisant le type d'événement : CLIC DROIT (i.e oncontextmenu).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <rich:dataTable id="myDataTable" ...> ... </rich:dataTable> <rich:contextMenu id="contextMenuId" event="oncontextmenu" attachTo="myDataTable"> ... </rich:contextMenu>
Problème : Comment récupérer la ligne sur laquelle on a cliqué ?!
J'ai essayé bon nombre de méthodes (ex : en récupérant la table dans le managed ben et en appelant la méthode getRowData() mais systématiquement ça me renvoie la même ligne peu importe sur laquelle je clique...)
2ème solution:
J'utilise "componentControl" pour activer le menu et passer un paramètre.
Ici le menu est affiché correctement et je récupère la ligne sur laquelle j'ai cliqué !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <rich:dataTable ... var="tableItem"> <rich:columns ...></rich:columns> <rich:componentControl event="onRowClick" for="contextMenuId" operation="show"> <f:param value="#{tableItem}" name="value" /> </rich:componentControl> </rich:dataTable> <rich:contextMenu id="contextMenuId" attached="false" submitMode="ajax"> ... </rich:contextMenu>
Problème : l'event "oncontextmenu" (clic droit) n'est pas supporté( sic !). Dans mon exemple ci dessus j'ai utilisé un simple clic et ça fonctionne...
Quelq'un a-t-il une solution à me proposer SVP ?
Merci
Partager