に示されている最初の行を選択する簡単な方法はありGrid
ますか? アイテムのリストがあり、DataProvider.ofCollection(items)
データ プロバイダーを使用しています。バッキング リストの最初の項目を選択するだけでは十分ではありませんGrid
。元のリストとは異なる順序になる可能性がある 1 つの列で並べ替えるからです。何か案が?
メソッドを使用できますDataProvider.fetch
が、複雑すぎます。組み込みの方法はありませんか?
に示されている最初の行を選択する簡単な方法はありGrid
ますか? アイテムのリストがあり、DataProvider.ofCollection(items)
データ プロバイダーを使用しています。バッキング リストの最初の項目を選択するだけでは十分ではありませんGrid
。元のリストとは異なる順序になる可能性がある 1 つの列で並べ替えるからです。何か案が?
メソッドを使用できますDataProvider.fetch
が、複雑すぎます。組み込みの方法はありませんか?
できることは、現在の並べ替えの列 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());
}