Сетка Vaadin Flow с индексом строк - PullRequest
4 голосов
/ 28 мая 2020

Как мне добавить столбец индекса строки в сетку, который не будет сортироваться по пользовательской сортировке строк?

Решение не должно включать изменения какого-либо полимерного шаблона, а должно выполняться в java.

1 Ответ

6 голосов
/ 28 мая 2020

Индекс, начинающийся с 0

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

, это работает, потому что во внешней части сетки уже есть свойство индекса, доступное для каждой строки.


Индекс, начинающийся с 1

Изменить: на самом деле это намного более простой способ добиться этого, чем тот, который я предлагал ранее. Вы можете установить рендерер на стороне клиента для веб-компонента с помощью execute JS.
Да, это все еще немного «хакерское», но все же намного лучше, чем мой собственный подход.

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

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

enter image description here


Связанные темы 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

...