Vaadin 8 Grid select 第一行
Vaadin 8 Grid select first row
是否有一种简单的方法来 select Grid
中显示的第一行?我有项目列表并使用 DataProvider.ofCollection(items)
数据提供程序。仅 select 我的支持列表的第一项是不够的,因为我按一列对 Grid
进行排序,这可能与原始列表中的顺序不同。有什么想法吗?
我可以使用DataProvider.fetch
方法,但感觉太复杂了。没有内置方法吗?
您可以做的是获取当前排序的 Column Id 和 SortDirection,然后使用您的数据排序并找到下一个对象 select。
对我来说,TreeGrid(扩展网格)也有同样的问题,所以这将是相似的,减去 TreeData/RootItems 部分。另外,我只对 "name".
进行了排序
<!-- language: lang-java -->
List<GridSortOrder<MyPojo>> order = grid.getSortOrder();
Column<MyPojo, ?> col = order.get(0).getSorted();
SortDirection dir = order.get(0).getDirection();
String colId = col.getId();
if(colId.equals("name")) {
Optional<MyPojo> first;
if(dir.equals(SortDirection.ASCENDING)) {
first = grid.getTreeData().getRootItems().stream()
.sorted(Comparator.comparing(MyPojo::getName)).findFirst();
}else {
first = grid.getTreeData().getRootItems().stream()
.sorted(Comparator.comparing(MyPojo::getName).reversed()).findFirst();
}
if(first.isPresent())
grid.select(first.get());
}
是否有一种简单的方法来 select Grid
中显示的第一行?我有项目列表并使用 DataProvider.ofCollection(items)
数据提供程序。仅 select 我的支持列表的第一项是不够的,因为我按一列对 Grid
进行排序,这可能与原始列表中的顺序不同。有什么想法吗?
我可以使用DataProvider.fetch
方法,但感觉太复杂了。没有内置方法吗?
您可以做的是获取当前排序的 Column Id 和 SortDirection,然后使用您的数据排序并找到下一个对象 select。
对我来说,TreeGrid(扩展网格)也有同样的问题,所以这将是相似的,减去 TreeData/RootItems 部分。另外,我只对 "name".
进行了排序<!-- language: lang-java -->
List<GridSortOrder<MyPojo>> order = grid.getSortOrder();
Column<MyPojo, ?> col = order.get(0).getSorted();
SortDirection dir = order.get(0).getDirection();
String colId = col.getId();
if(colId.equals("name")) {
Optional<MyPojo> first;
if(dir.equals(SortDirection.ASCENDING)) {
first = grid.getTreeData().getRootItems().stream()
.sorted(Comparator.comparing(MyPojo::getName)).findFirst();
}else {
first = grid.getTreeData().getRootItems().stream()
.sorted(Comparator.comparing(MyPojo::getName).reversed()).findFirst();
}
if(first.isPresent())
grid.select(first.get());
}