Je sais que je dois utiliser grid.getDataProvider()
pour obtenir le ListDataProvider
(en supposant que j'ai envoyé un List
à grid.setItems()
). Dans d'autres pour calculer le total de bas de page que je fais:Comment calculer le total dans un pied de grille Vaadin 8 avec le filtrage
Collection myItems = ((ListDataProvider)grid.getDataProvider()).getItems();
for(MyItem myItem : myItems)
total += myItem.getValue();
footer.getCell(footerCell).setText(format(total));
Mais cela ne fonctionne pas si j'ajoute un pied de page, car il calcule sur tous les éléments de ma grille. Ainsi, par exemple si j'ajoute:
((ListDataProvider)grid.getDataProvider()).addFilter(myFilter);
Le code en haut échoue depuis le pied de page n'est pas le total filtré, mais le total complet de la grille.
Cela dit someone suggested I use:
grid.getDataCommunicator().fetchItemsWithRange(...);
Cependant ceci est une méthode protégée. En supposant que je crée ma propre sous-classe, je ne comprends même pas comment cette méthode fonctionne.
Mais même alors, cela semble trop complexe et quelque chose qui devrait être simple, surtout s'il y a une possibilité d'ajouter un filtrage dans les grilles.
Par conséquent, ma grande question est comment puis-je calculer le total du pied de page dans une grille Vaadin 8 si je filtre la grille?
Merci. La partie clé qui me manquait était la possibilité de faire une nouvelle requête <>(). Je n'avais aucune idée que tu pouvais faire ça. J'ai supposé que si ce n'était pas nécessaire, ce ne serait pas un paramètre et quelque chose comme une requête vide serait créé pour vous par défaut dans l'API. En tout cas merci, ça a fonctionné parfaitement !! –