Сетка Vaadin Flow с индексом строк

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

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


person kscherrer    schedule 28.05.2020    source источник


Ответы (1)


Индекс начиная с 0

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

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


Индекс начиная с 1

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

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

person kscherrer    schedule 28.05.2020
comment
Это именно то, что мне нужно. Спасибо за подробный ответ. Интересно, почему нет официального способа сделать это, несмотря на то, что вопрос поднимался много раз. Я протестирую это и обновлю результаты. - person Aman Verma; 28.05.2020
comment
@kscherrer Да только сейчас опробовал. Теперь работает как шарм. Цените свое время и усилия. - person Aman Verma; 28.05.2020
comment
Это довольно крутой хакер. Я не знал, что таким образом возможно выполнение js с использованием java в сетке. Еще раз спасибо @kscherrer! Ты спас мне день. - person Aman Verma; 29.05.2020
comment
Если сетка разбита на страницы. Когда я перехожу на вторую страницу. Индекс снова начинается с 1. Есть ли способ продолжить значение индекса строки на второй странице сетки с разбивкой на страницы? - person Aman Verma; 17.06.2020
comment
@AmanVerma Не уверен, как настроена ваша разбивка на страницы и как она мешает rowIndex. У меня нет опыта работы с сетками с разбивкой на страницы, и я не могу вам здесь помочь. - person kscherrer; 17.06.2020
comment
Нет проблем, спасибо за ответ .. Однако я использовал эту разбитую на страницы сетку: vaadin.com / directory / component / grid-pagination / overview - person Aman Verma; 17.06.2020