J'ai ajouté des filtres à ma grille comme suit:Comment ré-appliquer des filtres dans Vaadin 8 Grille
filterTextField.addValueChangeListener(event -> {
myListDataProvider.addFilter(
columnName,
value-> value.toLowerCase().contain(filterTextField.getValue()));
});
Ceci définit et applique le filtre. Cependant plus tard, je réalise une action sur la grille qui nécessite un rechargement des éléments tels que:
grid.setItems(reloadItemsDueToAction());
Quand je fais le filterTextField
est bien sûr remplir encore et la grille est rechargée, mais le problème est que je don Je ne sais pas comment réappliquer les filtres qui ont été réglés dans le ListDataProvider
afin que la grille soit de nouveau filtrée selon le filterTextField
. Les filtres doivent toujours être définis dans ListDataProvider mais comment les appliquer dans la grille?
Généralement, vous pouvez appeler ['dataProvider.refreshAll()'] (https://vaadin.com/api/8.1.5/com/vaadin/data/provider/DataProvider.html#refreshAll--) qui déclenche un 'DataChangeEvent', la grille le reçoit et met à jour l'interface utilisateur. Comment vos données changent-elles pour nécessiter un appel à 'grid.setItems (...)'? – Morfic
L'appel de refreshAll() ne fonctionne pas. Un exemple d'action serait celui où les données sont transférées d'une table de base de données à une autre en fonction des détails de l'action, auquel cas il est plus facile de simplement recharger la grille. Le problème est que lorsque je recharge la grille, les filtres sont toujours visibles dans TextField mais ne sont plus appliqués sur la grille. –
Utilisez-vous le fournisseur de données pour extraire les données de la BD ou autre chose? Je pense que ce serait plus facile si vous pouviez fournir un [sscce] (http://sscce.org) – Morfic