Vaadin 8 Grid选择第一行

时间:2017-06-12 11:18:02

标签: vaadin8

是否有一种简单的方法可以选择Grid中显示的第一行?我有项目列表并使用DataProvider.ofCollection(items)数据提供程序。仅仅选择我的支持列表的第一项是不够的,因为我将Grid按一列排序,这可能与原始列表中的顺序不同。有什么想法吗?

我可以使用DataProvider.fetch方法,但感觉太复杂了。没有内置方式吗?

1 个答案:

答案 0 :(得分:2)

您可以做的是获取当前排序列Id和SortDirection,然后使用您的数据,排序并找到要选择的下一个对象。

对我来说,我对TreeGrid(扩展Grid)有同样的问题,所以这将是类似的,减去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());
}