0

我需要在获取数据时对其进行操作

    @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 仅获取可见行,因为它具有延迟加载功能。

4

0 回答 0