使用 vaadin-grid 进行不区分大小写的排序

Case insensitive sort using vaadin-grid

我正在使用 vaadin-grid 组件来显示一些网格数据,包括文本。在文本列中,排序似乎不区分大小写。仅对以大写字母开头的文本进行排序,忽略以小写字母开头的文本。
我检查了 vaadin-grid-sorter 的 API documentation,它是 vaadin-grid 中用于排序的辅助元素,但无法获得所需的结果。
请建议其他方法。帮助将不胜感激。

您始终可以手动对数据集进行排序,然后再将其设置为网格的 items

要了解如何实现不区分大小写的排序,请查看: How to perform case insensitive sorting in Javascript?

编辑: 如果您使用的是(远程 API)dataProvider(请参阅 https://vaadin.com/elements/vaadin-grid/html-api/elements/Vaadin.GridElement:使用函数数据提供程序进行延迟加载),您的提供程序函数将使用 callback 函数作为其第二个参数进行调用,请求完成后。在将结果传递给该回调之前,只需对结果进行排序。

container.setItemSorter(new CaseInsensitiveItemSorter());

这应该是您需要的全部 - 至少对于 Vaadin 7 或 8,不确定 10。

使用 Vaadin 14(.1.25) 您可以不区分大小写进行排序,例如有了这个:

Column<MyObject> column = ...;
column.setComparator(new Comparator<MyObject>() {
    @Override
    public int compare(MyObject arg0, MyObject arg1) {
        return arg0.getText().compareToIgnoreCase(arg1.getText());
    }
});