Salut les gens,
Je me suis mis à utiliser RichFaces (3.1.2 GA) entre autre pour l'avantage des tag filterBy et sortBy des datatable.
J'ai ajouté, dans une r:datatable, une colonne de h:selectBooleanCheckbox, bindée via un objet view sur un UISelectBoolean.
Je désire effectuer un traitement Java après clic sur bouton, sur toutes les lignes dont le checkBox est sélectionné.
Problème : si j'utilise le filterBy (saisie d'une lettre quelconque et affichage de quelques lignes seulement), et que je coche une ligne, le traitement Java ne se fait pas sur la ligne correspondante ! Le filter By ne s'applique que sur le visuel rendu à l'utilisateur, tandis que ma méthode getSelectedLines me rend un numéro de ligne dans toute la ArrayList !!
ex :
ArrayList : aa - ab - cc - cd
Affichage : aa - ab - cc - cd
checkbox : x - x
-->lignes séléctionnée : (1) aa, (2) ab
ArrayList --------------- : aa - ab - cc - cd
Affichage avec filterBy "c" : cc - cd
checkbox --------------- : x - x
-->lignes séléctionnée : (1) aa, (2) ab
Que puis-je faire à votre avis ? retravailler la méthode getSelectedLines (mais comment ?) ? Utiliser un autre moyen de "cochage" de ligne ? un autre composant ?
getSelectedLines
merci d'avance pour vos idées
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public List getSelectedLines() { int size = this.dataTable.getRowCount(); List datas = (List) this.dataTable.getValue(); List selectedObjects = new ArrayList(); for (int i = 0; i < size; i++) { this.dataTable.setRowIndex(i); if (this.globalCheckboxSelection.isSelected()) { selectedObjects.add(datas.get(i)); } } return selectedObjects; }![]()
Partager