Bonjour,
J'ai un petit problème pour trier mes colonnes avec une dataTable de iceFaces.
Après avoir écumé les forum et le site de démo d'iceFaces, j'ai compris que si l'on voulais trier une colonne d'une dataTable, il fallait une classe abstraite SortableList.
Cette classe abstraite contient une procédure sort() qui permet de classer les éléments si j'ai bien compris et une fonction isAscending() qui renvoie un booléen pour définir le sens de classement.
Mon problème c'est que ma page dans lequel se trouve mon code et donc l'endroit ou je devrais redéfinir les fonctions abstraite hérite déjà d'un autre classe (AbstractPageBean).
J'ai essayé de définir les fonctions dans la classe SortableList en enlevant le "abstract" mais ensuite c'est pour l'appel dans le JSP où j'ai un problème car il ne voie ma classe et donc je ne peux pas binder ma dataTable avec les fonctions de classement.
Voila un peu de code pour visualiser le truc,
sort () et isAscending :
L'appel dans le JSP :
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 /** * Sort the list. */ public void sort(){ Comparator comparator = new Comparator() { public int compare(Object o1, Object o2) { Ical c1 = (Ical) o1; Ical c2 = (Ical) o2; if (sortColumnName == null) { return 0; } if (sortColumnName.equals("Salle")) { return ascending ? c1.getLoc().compareTo( c2.getLoc()) : c2.getLoc() .compareTo(c1.getLoc()); } if (sortColumnName.equals("Début")) { return ascending ? c1.getDtstart() .compareTo(c2.getDtstart()) : c2.getDtstart() .compareTo(c1.getDtstart()); } else return 0; } }; } /** * Is the default sortColumnName direction for the given column "ascending" ? */ public boolean isDefaultAscending(String sortColumn){ return true; }
Pour la classe SortableList je l'ai récupérer ici tuto icefaces
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <ice:dataTable binding="#{Page1.dataTable2}" id="dataTable2" rowClasses="evenRow,oddRow" rows="6" sortAscending="#{? ? ?}" sortColumn="#{? ? ?}" style="left: 80px; top: 0px; position: absolute" value="#{Page1.lst}" var="ical"> <ice:column id="column3" style="width: 200px; height: 150px"> <ice:outputText escape="false" id="outputText7" style="text-align: center; font: 30px Arial, Verdana;" value="#{ical.dtstart}"/> <f:facet name="header"> <ice:commandSortHeader columnName="Début" id="debutHeader"> <ice:outputText id="outputText8" style="text-align: center; font: 20px Arial, Verdana;" value="Début"/> </ice:commandSortHeader> </f:facet> </ice:column>
Merci d'avance pour votre aide et n'hésité pas à demander des précisions si vous trouvez que je n'ai pas été assez clair.
=)
Partager