我需要在获取数据时对其进行操作
@Override
public Stream<T> fetch(Query<T, F> query) {
...
}
我在运行时发现,由于延迟加载功能,数据并未全部获取。当我操作它们时,我需要获取所有行。
如何在保留延迟加载功能的同时对所有数据进行排序/过滤?
编辑:我的情况:在我的前端,我有一些可以从网格中选择的批处理操作,我可以从第一行或当前选择的行中选择起始行。在 vaadin7 中,我只使用 IndexedContainer 的 firstItemID、lastItemID、prevItemID、nextItemID 方法来循环遍历网格行。在 vaadin8 中,没有这样的方法。所以我正在考虑将 prev 和 next 指针添加到我的 bean,并在每次数据提供者获取行时链接它们
@Override
public Stream<T> fetch(Query<T, F> query) {
List<T> result = wrapped.fetch(query).collect(Collectors.toCollection(ArrayList::new));
fakeDataBean prevbean = null;
for (int i = 1; i <= result.size(); i++) {
fakeDataBean bean = result.get(i-1);
bean.setPreviousRow(prevbean);
if (prevbean!=null) {
prevbean.setNextRow(bean);
} else {
first = bean;
}
prevbean = bean;
if (i==result.size()) {
last = bean;
}
}
return wrapped.fetch(query);
}
问题是 DataProvider 仅获取可见行,因为它具有延迟加载功能。