获得从网格的所有项目与目前的过滤器,并在Vaadin 13分选中的应用

dosenfant:

我想从一个网格中的所有项目进行出口。检索到的名单应遵守所有应用的过滤和排序。我使用的是ListDataProvider如果它很重要。

建议的解决方案包括:

  1. 使用ListDataProvider.getItems()grid.getDataProvider().fetch(new Query<>()).collect(Collectors.toList())在这里
  2. 使用grid.getDataCommunicator().fetchItemsWithRange(0,grid.getDataCommunicator().getDataProviderSize())这里这里
  3. 使用grid.getDataCommunicator().fetchFromProvider(..)这里

缺点:

  1. 该项目不排序/过滤。
  2. 解Vaadin 8的方法,不存在于Vaadin 13。
  3. 提供的方法是受保护的,所以不能被调用。

如何真正得到从电网的所有项目与应用的过滤和排序?

kscherrer:

既然你投grid.getDataProvider一个ListDataProvider<Type>,你可以从ListDataProvider获得当前过滤器用于抓取查询。

但是,只有使用该查询将忽略排序顺序筛选。要采取所有信息纳入考虑你需要从两个数据提供程序(过滤信息)利用信息和dataCommunicator(分类信息)

ListDataProvider<Type> dataProvider = (ListDataProvider<Type>) grid.getDataProvider();
int totalSize = dataProvider.getItems().size();
DataCommunicator<Type> dataCommunicator = grid.getDataCommunicator();
Stream<Type> stream = dataProvider.fetch(new Query<>(
        0,
        totalSize,
        dataCommunicator.getBackEndSorting(),
        dataCommunicator.getInMemorySorting(),
        dataProvider.getFilter()));
List<Type> list = stream.collect(Collectors.toList());

编辑:你在你的答案说,这种感觉“哈克”。我明白你的意思,但是这是要做到这一点。我认为可以作出这种行为可以作为对电网本身就是一个公共API: List<Type> list = grid.getCurrentItems();然后,电网会做这个内部,所以你不会看到自己的“哈克”的一部分。我敢肯定,他们知道如何做同样的当dataProvider是不是一个实例ListDataProvider你可以在打开一个功能要求该GitHub库

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

RecyclerView项目样式应用于过滤器后的所有项目

取消选中所有复选框后,客户端过滤器将显示所有项目

带有搜索过滤器的Flutter应用网格视图?

如何在所有分页项目中应用过滤器,仅显示过滤后的项目?

删除所有与过滤器匹配的应用

在Vaadin Flow 14中将过滤器重新应用于ListDataProvider(用于网格小部件)

如果未使用angularjs过滤器选中复选框,则显示所有结果

当不再选中过滤器复选框时,如何再次显示所有 div?

绘图项目-将通知过滤器引入现有应用程序

适用于所有Web应用程序的tomcat过滤器

是否将地图应用于过滤器findAny之前的所有列表?

尝试在所有控制器中应用授权过滤器,但未使用IAuthorizationHandler

对除两条以外的所有路线都应用过滤器?

自定义 Servlet 过滤器未应用于所有资源

将所有过滤器功能应用于值

将全局过滤器应用于SQLAlchemy中每个查询的所有表

Python Openpyxl 应用过滤器并删除所有可见行

对除一个元素之外的所有元素应用过滤器

制作一次可同时应用所有过滤器的API

应用过滤器会显示变量的所有级别

应用过滤器,使用 tcpdump 读取除 DNS 和 TCP 之外的所有流量

在闪亮的应用程序中的输入过滤器中添加“所有值”

将过滤器应用于除第一行之外的所有行

在 Ext Js 网格过滤器中未选中过滤器菜单的复选框时触发事件?

如何将过滤器后端应用于Django Rest Framework中所有资源的所有字段?

将过滤器应用于ListView的单个项目

如何将搜索意图过滤器和android.app.searchable应用于所有活动?

对包含给定短语的字符串应用过滤器,并返回之后出现的所有内容

如何在R Shiny仪表板中应用任何过滤器之前显示所有数据