我需要在获取数据时操纵数据
@Override
public Stream<T> fetch(Query<T, F> query) {
...
}
我在运行时发现,由于延迟加载功能,数据并非全部被提取。我操纵它们时需要获取所有行。
如何在保留延迟加载功能的同时获取已排序/过滤的所有数据?
编辑: 我的情况: 在我的前端,我有一些批处理操作,我可以从我的网格中选择,我可以选择起始行,从第一行或从当前选定的行。 在vaadin7中,我只使用IndexedContainer的firstItemID,lastItemID,prevItemID,nextItemID方法来循环遍历网格行。 在vaadin8中,没有这样的方法。所以我想添加prev和next指向我的bean,并在每次dataaprovider获取行时链接它们
@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由于其延迟加载功能而仅提取可见行。