0
有沒有簡單的方法來選擇Grid
中顯示的第一行?我有物品清單並使用DataProvider.ofCollection(items)
數據提供者。僅僅選擇我的支持列表的第一項是不夠的,因爲我將Grid
排序爲一列,其可能與原始列表中的順序不同。任何想法?Vaadin 8格選第一行
我可以使用DataProvider.fetch
方法,但感覺太複雜了。有沒有內置的方式?
有沒有簡單的方法來選擇Grid
中顯示的第一行?我有物品清單並使用DataProvider.ofCollection(items)
數據提供者。僅僅選擇我的支持列表的第一項是不夠的,因爲我將Grid
排序爲一列,其可能與原始列表中的順序不同。任何想法?Vaadin 8格選第一行
我可以使用DataProvider.fetch
方法,但感覺太複雜了。有沒有內置的方式?
你可以做的是獲得當前的排序列ID和排序方向,然後與你的數據,排序並找到下一個對象選擇。
對我來說,我有與TreeGrid(擴展網格)相同的問題,所以這將是類似的,減去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中的順序不同,所以這也是一個蕭條。儘管如此,如果您從數據庫獲取數據並將其作爲查詢結果進行排序,則可以使用第一項。否則,你可以嘗試打開[與Vaadin團隊問題](https://github.com/vaadin/framework/issues)。 – Morfic