【发布时间】:2017-10-21 01:06:35
【问题描述】:
我已将过滤器添加到我的网格中,如下所示:
filterTextField.addValueChangeListener(event -> {
myListDataProvider.addFilter(
columnName,
value-> value.toLowerCase().contain(filterTextField.getValue()));
});
这会设置并应用过滤器。但是后来我在网格上执行了一个操作,需要重新加载项目,这样:
grid.setItems(reloadItemsDueToAction());
当我这样做时,filterTextField 当然仍会填充并重新加载网格,但问题是我不知道如何重新应用在 ListDataProvider 中设置的过滤器,以便网格再次根据filterTextField 过滤。过滤器仍应在 ListDataProvider 中设置,但如何在网格中应用它们?
【问题讨论】:
-
通常你可以调用
dataProvider.refreshAll()触发DataChangeEvent,网格接收它并更新UI。您的数据如何更改以需要致电grid.setItems(...)? -
调用 refreshAll() 不起作用。一个示例操作是根据操作的详细信息将数据从一个数据库表传输到另一个数据库表的操作,在这种情况下,只需重新加载网格就更容易了。问题是当我重新加载网格时,过滤器在 TextField 中仍然可见,但不再应用于网格。
-
您是在使用数据提供程序从数据库中检索数据还是其他方式?我觉得如果你能提供一个sscce 会更容易
标签: vaadin vaadin8 vaadin-grid