根据相应的整数值对 String 类型的 Grid 列中的行进行排序

sam*_*tts 0 vaadin vaadin-grid

我有以下网格结构,并想知道如何根据字符串的整数值对列进行排序。数据提供者无法灵活更改,因此我必须通过某种中间步骤进行排序:

Grid<String[]> grid = new Grid<>();
...

grid.addColumn(str -> str[columnIndex]).setHeader("sample").setKey("integercolumn").setSortable(true);

...

GridSortOrder<String> order = new GridSortOrder<>(grid.getColumnByKey("integercolumn"), SortDirection.DESCENDING);

grid.sort(Arrays.asList(order));

Run Code Online (Sandbox Code Playgroud)

这可以正确排序两位数字,但不能对一位或 3+ 数字进行排序。

Sas*_*ker 6

您可以在用于对其值进行排序的列上定义自定义比较器。在您的情况下,比较器需要从数组中提取特定于列的值,然后将其转换为 int:

        grid.addColumn(row -> row[columnIndex])
                .setHeader("sample")
                .setKey("integercolumn")
                .setSortable(true)
                .setComparator(row -> Integer.parseInt(row[columnIndex]));
Run Code Online (Sandbox Code Playgroud)

请参阅https://vaadin.com/docs/latest/components/grid/#specifying-the-sort-property