绕过数据提供者的延迟加载

时间:2017-06-16 04:44:10

标签: vaadin8

我需要在获取数据时操纵数据

    @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由于其延迟加载功能而仅提取可见行。

0 个答案:

没有答案