如何获取 Vaadin 14 中网格的列顺序?

Ste*_*ier 4 vaadin vaadin-flow vaadin14

例如,在 Vaadin 8 中,您只需执行以下操作即可按屏幕上显示的顺序获取列的列表。

String columnOrderPreference = ((List<Grid.Column>)grid.getColumns()).stream()
            .map(Grid.Column::getId)
            .collect(Collectors.joining(VALUE_SEPARATOR));
Run Code Online (Sandbox Code Playgroud)

这特别方便,因为您可以保存该字符串,然后调用:

grid.setColumnOrder(columnOrderPreference.split(VALUE_SEPARATOR));
Run Code Online (Sandbox Code Playgroud)

在 Vaadin 14 中(忽略getId()现在应该使用的getKey()),这不再可能,因为getColumns()列表现在总是按照它们添加的顺序而不是它们的排序顺序返回。您仍然可以调用setColumnOrder(...)(使用不同的参数 - list of grid.getColumnByKey(columnKey)),但我无法弄清楚如何按照显示的顺序获取列列表。

这对于尝试保存用户返回同一页面(使用网格)时设置/更改的列顺序特别有用。

cfr*_*ick 5

您可以 在网格上收听 ColumnReorderEvent

Registration addColumnReorderListener(ComponentEventListener<ColumnReorderEvent<T>> listener)
Run Code Online (Sandbox Code Playgroud)

活动举办:

/* Gets the new order of the columns. */
List<Grid.Column<T>> getColumns()
Run Code Online (Sandbox Code Playgroud)