Bonjour tout le monde,
j'ai actuellement un problème que je n'arrive pas du tout à résoudre. En effet, j'aimerais via des checkbox, récupérer les lignes qui ont été sélectionnées.
Pour l'instant, pour pouvoir y parvenir, j'ai mis une action sur le clique de ma checkbox : lorsque l'utilisateur clique sur une checkbox, cette ligne est ajoutée à une liste. Or, admettons, que l'utilisateur se soit trompé et désire la retirer de la sélection, l'action est aussi déclenchée et je me retrouve avec deux même éléments dans ma liste.
Voici le code de ma page xhtml :
Et voici le code de mes actions :
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 <!-- Mise en place des checkbox --> <rich:extendedDataTable ajaxRendered="false" enableContextMenu="false" value="#{controller.detailedVariables}" var="detailedVar" rendered="#{controller.monObjet.class.simpleName == 'Table'}" id="id_tablevariables" height="400px" sortMode="single" selectionMode="single" width="98%" rowKeyVar="row" ajaxKeys="#{controller.keysSet}" binding="#{GenererFichePdf.extendedDataTable}" > [...] <rich:column width="5%" label="Export" id="col_checkbox"> <h:selectBooleanCheckbox id="selectElement" value="#{GenererFichePdf.checkbox}" rendered="#{RechercheVariableViewerController.schemaIsTopFiche}"> <a4j:support event="onclick" action="#{GenererFichePdf.selected}" reRender="#{GenererFichePdf.checkbox}" process="exportPdf" /> </h:selectBooleanCheckbox> <f:facet name="header"> <h:selectBooleanCheckbox id="selectAllElement" value="#{GenererFichePdf.checkboxAll}" > <a4j:support event="onclick" action="#{GenererFichePdf.cocherAll}" process="selectAllElement" reRender="selectElement"/> </h:selectBooleanCheckbox> </f:facet> </rich:column> </rich:extendedDataTable>
La méthode "createListFiche2Pdf()" n'est appelée que lorsque je clique sur un bouton.
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 private UIExtendedDataTable extendedDataTable; private boolean checkbox ; private boolean checkboxAll; public List<Fiche> listFiche2Pdf = new ArrayList(); private List listSelect = new ArrayList(); private String fileName = null; public void selected(){ listSelect.add(extendedDataTable.getRowData()); } public void cocherAll(){ int size=extendedDataTable.getRowCount(); if(checkboxAll){ for(int i=0;i<size;i++){ this.extendedDataTable.setRowIndex(i); this.checkbox = true; } }else{ for(int i=0;i<size;i++){ this.extendedDataTable.setRowIndex(i); this.checkbox = false; } } } public void createListFiche2Pdf() throws SofFwkException{ Date dateModifVar = new Date(); if(checkboxAll){ int size = this.extendedDataTable.getRowCount(); System.out.println(size); for(int i=0; i<size; i++){ this.extendedDataTable.setRowIndex(i); List datas = (List) extendedDataTable.getValue(); if(checkbox){ listSelect.add(datas.get(i)); } } } }
Je vous remercie d'avance pour l'aide que vous pourrez m'apportez et pour avoir au moins lu mon problème.
Partager