java如何在Vaadin 8中添加网格过滤器?
瓦丁8号刚出来。在网格中添加过滤器从未出现在他们的文档中,我在stackoverflow中只找到了一个可行的解决方案here
HeaderCell cell = filterRow.getCell(pid);
// Have an input field to use for filter
TextField filterField = new TextField();
filterField.setColumns(0);
filterField.setHeight("23");
// Update filter When the filter input is changed
filterField.addTextChangeListener(change -> {
// Can't modify filters so need to replace
b.removeContainerFilters(pid);
// (Re)create the filter if necessary
if (! change.getText().isEmpty())
b.addContainerFilter(
new SimpleStringFilter(pid,
change.getText(), true, false));
});
cell.setComponent(filterField);
但自从更新后,这个解决方案不再有效,因为SimpleStringFilter在新网格中不再可用,BeanItemContainer不再被识别,只允许setItems()填充网格数据
有人能帮我更新Vaadin 8的代码吗
# 1 楼答案
可以为Vaadin 8网格添加过滤
假设我们已经将人模型定义为:
我们的网格实现如下所示:
现在,我们可以创建一个带有文本字段的布局,它将成为我们的过滤器:
结果如下所示:
对于空输入,结果是:foo、bar和foobar
对于foo结果是:foo和foo条
对于bar,结果是:bar和foobar
对于foobar,结果是:foobar