I Filter meinem Gitter wie die folgenden hinzugefügt haben:Wie erneut anwenden Filter in Vaadin 8 Grid
filterTextField.addValueChangeListener(event -> {
myListDataProvider.addFilter(
columnName,
value-> value.toLowerCase().contain(filterTextField.getValue()));
});
den Filter Diese Sätze und wendet. Jedoch später führe ich eine Aktion auf dem Gitter, das ein erneutes Laden der Elemente erfordert, so dass:
grid.setItems(reloadItemsDueToAction());
Wenn ich dies tun, die filterTextField
natürlich noch bevölkern und das Gitter neu geladen wird, aber das Problem ist, dass ich don weiß nicht, wie man die Filter, die in ListDataProvider
gesetzt wurden, erneut anwendet, so dass das Gitter wieder entsprechend der filterTextField
gefiltert wird. Die Filter sollten weiterhin im ListDataProvider gesetzt werden, aber wie kann ich sie im Grid anwenden?
Normalerweise können Sie ['dataProvider.refreshAll()'] (https://vaadin.com/api/8.1.5/com/vaadin/data/provider/DataProvider.html#refreshAll--) aufrufen, was a auslöst 'DataChangeEvent', das Grid empfängt es und aktualisiert die Benutzeroberfläche. Wie ändern sich Ihre Daten, um einen Aufruf von 'grid.setItems (...)' zu erfordern? – Morfic
Der Aufruf von refreshAll() funktioniert nicht. Eine Beispielaktion wäre eine, bei der die Daten abhängig von den Details der Aktion von einer Datenbanktabelle in eine andere übertragen werden. In diesem Fall ist es einfacher, das Raster neu zu laden. Das Problem besteht darin, dass die Filter beim Laden des Rasters immer noch im TextField sichtbar sind, aber nicht mehr auf das Raster angewendet werden. –
Verwenden Sie den Datenprovider zum Abrufen der Daten aus der Datenbank oder etwas anderem? Ich denke, es wäre einfacher, wenn Sie eine [sscce] (http://sscce.org) zur Verfügung stellen könnten. – Morfic