Bonjour,
Dans ma datatable, j'aimerais pouvoir mettre en place le principe suivant :
La colonne 1 permet de sélectionner un objet (avec un p:autoComplete). Cet objet contient une liste d'objets (d'un autre type).
Dans la colonne 2, j'aimerais pouvoir ne sélectionner (grâce à un p:selectOneMenu) que les objets contenus dans la liste de l'objet choisi dans la colonne 1.
Lorsque j'édite la colonne suivante, il faut mettre à jour les choix possibles de la colonne 2, de même que lorsque je modifie la valeur de la colonne 1.
Je ne pense pas être loin de la solution mais il me manque qqch.
La table est en mode editRow, avec l'event rowEditInit :
Les colonnes 1 et 2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <p:ajax event="rowEditInit" listener="#{saisirHeuresForm.setSelectedHeureForEdit}" /> public void setSelectedHeureForEdit(RowEditEvent event) { DataTable table = (DataTable) event.getSource(); selectedHeure = (Heure) table.getRowData(); }
La méthode qui retourne la liste des objets de la colonne 2 :
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 <p:column headerText="@ #{msg['Mandat']}" style="width:7%"> <p:cellEditor> <f:facet name="output"> <h:outputText value="#{heure.mandat.numero}" /> </f:facet> <f:facet name="input"> <p:autoComplete id="mandat" value="#{heure.mandat}" completeMethod="#{saisirHeuresForm.completeMandat}" var="mandat" itemLabel="#{mandat.numero}" itemValue="#{mandat}" converter="MandatConverter" forceSelection="true" size="50" immediate="true" /> </f:facet> </p:cellEditor> </p:column> <p:column headerText="#{msg['MaitreDOeuvre']}" style="width:10%"> <p:cellEditor> <f:facet name="output"> <h:outputText value="#{heure.maitreOuvrage}" /> </f:facet> <f:facet name="input"> <p:selectOneMenu id="mo" value="#{heure.maitreOuvrage}"> <f:selectItem itemLabel="Select One" itemValue="#{null}" /> <f:selectItems value="#{saisirHeuresForm.listHeureMaitreOeuvre}" /> </p:selectOneMenu> </f:facet> </p:cellEditor> </p:column>
La liste des éléments de la colonne 2 ne se met pas à jour au bon moment, voir pas à chaque fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public List<Identite> getListHeureMaitreOeuvre() { List<Identite> lst = new ArrayList<Identite>(); if (selectedHeure != null && selectedHeure.getMandat() != null && CollectionUtils.isNotEmpty(selectedHeure.getMandat().getListMandatIdentite())) { for (MandatIdentite mandatIdt : selectedHeure.getMandat().getListMandatIdentite()) { lst.add(mandatIdt.getIdentite()); } } return lst; }
Qqun peut-il m'aider ?
Merci pour votre aide
Partager