1

に示されている最初の行を選択する簡単な方法はありGridますか? アイテムのリストがあり、DataProvider.ofCollection(items)データ プロバイダーを使用しています。バッキング リストの最初の項目を選択するだけでは十分ではありませんGrid。元のリストとは異なる順序になる可能性がある 1 つの列で並べ替えるからです。何か案が?

メソッドを使用できますDataProvider.fetchが、複雑すぎます。組み込みの方法はありませんか?

4

1 に答える 1

2

できることは、現在の並べ替えの列 ID と並べ替え方向を取得し、データを使用して並べ替えて、次に選択するオブジェクトを見つけることです。

私にとっては、TreeGrid (Grid を拡張する) で同じ問題が発生したため、TreeData/RootItems の部分を除いて同様になります。また、「名前」のみでソートしました。

<!-- 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());
}
于 2017-08-24T22:30:31.223 に答える