带有行索引的 Vaadin 流网格

Vaadin Flow Grid with Row-Index

如何将行索引列添加到网格中,该列不会按照用户对行的排序进行排序?

解决方案不得包含对任何聚合物模板的更改,而应该在 java 中完成。

索引从 0 开始

grid.addColumn(TemplateRenderer.of("[[index]]"));

这是有效的,因为在网格的前端部分已经有一个索引 属性 可用于每一行。


索引从 1 开始

编辑:与我之前提出的方法相比,这实际上是一种 更简单的方法。您可以使用 executeJS 为 Web 组件设置客户端渲染器。
是的,它仍然有点 "hacky",但它仍然比我自己的方法好很多。

grid.addColumn(item -> "").setKey("rowIndex");

grid.addAttachListener(event -> {
    grid.getColumnByKey("rowIndex").getElement().executeJs(
            "this.renderer = function(root, column, rowData) {root.textContent = rowData.index + 1}"
    );
});


相关 github 和 vaadin-forum 线程:

https://vaadin.com/forum/thread/17471146/grid-start-row-count-from-1,
https://github.com/vaadin/vaadin-grid/issues/1386,
https://vaadin.com/forum/thread/18287678/vaadin-grid-exclude-specific-column-from-sorting,
https://github.com/vaadin/vaadin-grid-flow/issues/803