如何禁用 vaadin 14 的未排序状态
How to disable unsorted state of vaadin 14
我用经典 Vaadin Grid。但是,我想禁用下面的第三个选项。 Grid 只需要显示降序或升序。如何禁用未排序状态?
默认情况下,网格中的列排序是这样工作的:
第一次点击列header对该列进行排序。
第二次单击会反转排序顺序。
第三次单击会将列重置为其未排序状态。
这是我的网格:
private Grid<Read> grid2 = new Grid<>(Read.class);
grid2.setColumns("type", "date", "message");
感谢您的帮助。
我想到的第一个有点笨拙的服务器端解决方法是监听排序顺序更改,并在列从列表中消失时重新排序。例如
private final Set<String> currentlySortedColumns = new HashSet<String>();
grid.setMultiSort(true);
grid.addSortListener(e -> {
List<GridSortOrder<SamplePerson>> sortOrderList = e.getSortOrder();
List<String> notFound = new ArrayList<String>(
currentlySortedColumns);
for (GridSortOrder<SamplePerson> sortOrder : sortOrderList) {
String key = sortOrder.getSorted().getKey();
currentlySortedColumns.add(key);
notFound.remove(key);
}
if (!notFound.isEmpty()) {
for (String key : notFound) {
sortOrderList.add(0, new GridSortOrder<>(
grid.getColumnByKey(key), SortDirection.ASCENDING));
}
grid.sort(sortOrderList);
}
});
请注意,由于它仅在服务器往返后触发重新排序,因此未排序的图标会显示片刻,然后再次指向上方。
我用经典 Vaadin Grid。但是,我想禁用下面的第三个选项。 Grid 只需要显示降序或升序。如何禁用未排序状态?
默认情况下,网格中的列排序是这样工作的:
第一次点击列header对该列进行排序。
第二次单击会反转排序顺序。
第三次单击会将列重置为其未排序状态。
这是我的网格:
private Grid<Read> grid2 = new Grid<>(Read.class);
grid2.setColumns("type", "date", "message");
感谢您的帮助。
我想到的第一个有点笨拙的服务器端解决方法是监听排序顺序更改,并在列从列表中消失时重新排序。例如
private final Set<String> currentlySortedColumns = new HashSet<String>();
grid.setMultiSort(true);
grid.addSortListener(e -> {
List<GridSortOrder<SamplePerson>> sortOrderList = e.getSortOrder();
List<String> notFound = new ArrayList<String>(
currentlySortedColumns);
for (GridSortOrder<SamplePerson> sortOrder : sortOrderList) {
String key = sortOrder.getSorted().getKey();
currentlySortedColumns.add(key);
notFound.remove(key);
}
if (!notFound.isEmpty()) {
for (String key : notFound) {
sortOrderList.add(0, new GridSortOrder<>(
grid.getColumnByKey(key), SortDirection.ASCENDING));
}
grid.sort(sortOrderList);
}
});
请注意,由于它仅在服务器往返后触发重新排序,因此未排序的图标会显示片刻,然后再次指向上方。