我该如何在一个网格中添加一列用于显示行索引,且不会随着用户对行的排序而排序?
解决方案不能包括对任何聚合模板的更改,而应在Java中完成。
解决方案不能包括对任何聚合模板的更改,而应在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 论坛帖子:
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