あなたができることは、現在の並べ替えの列IDとSortDirectionを取得し、データで並べ替えて次に選択するオブジェクトを見つけることです。
私にとっては、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());
}
私が見た限りでは、簡単な手段ではできません。たとえば 'selectByIndex(0)'です。私はマルチセレクトモードに切り替えて、すべてのアイテムを選択し、選択を取得し、最初のアイテムを使用することで回避しようとしましたが、残念ながら選択したアイテムのセット内の順序はUIと同じではありません、それはまたバストです。それにもかかわらず、DBからデータを取得してクエリの結果としてソートされた場合は、最初の項目を使用できます。それ以外の場合は、[Vaadinチームの問題](https://github.com/vaadin/framework/issues)を開くことができます。 – Morfic