如何禁用 vaadin 14 的未排序状态

How to disable unsorted state of vaadin 14

我用经典 Vaadin Grid。但是,我想禁用下面的第三个选项。 Grid 只需要显示降序或升序。如何禁用未排序状态?

默认情况下,网格中的列排序是这样工作的:

  1. 第一次点击列header对该列进行排序。

  2. 第二次单击会反转排序顺序。

  3. 第三次单击会将列重置为其未排序状态。

这是我的网格:

    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);
    }
});

请注意,由于它仅在服务器往返后触发重新排序,因此未排序的图标会显示片刻,然后再次指向上方。