我想从一个网格中的所有项目进行出口。检索到的名单应遵守所有应用的过滤和排序。我使用的是ListDataProvider
如果它很重要。
建议的解决方案包括:
ListDataProvider.getItems()
或grid.getDataProvider().fetch(new Query<>()).collect(Collectors.toList())
(在这里)grid.getDataCommunicator().fetchItemsWithRange(0,grid.getDataCommunicator().getDataProviderSize())
(这里和这里)grid.getDataCommunicator().fetchFromProvider(..)
(这里)缺点:
如何真正得到从电网的所有项目与应用的过滤和排序?
既然你投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] 删除。
我来说两句