Как люди склонны позволять пользователям изменять порядок столбцов сетки и сохранять этот порядок на будущее?
Единственный способ сделать это, по крайней мере, в Vaadin 7, - это:
- Следите за изменением порядка столбцов через
addColumnReorderListener(…)
- При срабатывании повторного заказа, если инициировано пользователем, получить столбцы из
getColumns()
и сохранить в БД с любой идентифицирующей информацией - Когда вытащите сетку обратно, прочтите порядок сетки из БД и примените тот же порядок с
setColumnOrder(columns)
Так есть ли лучший способ сделать это? Я только что проверил Справочник, не нашел ничего очевидного, чтобы упростить задачу. Просто ищу, как другие учли это требование пользователя. Если Vaadin 14 уже поддерживает такие действия немного проще, было бы неплохо узнать об этом, так как это может дать мне некоторые идеи о том, как получить эту способность в краткосрочной перспективе, прежде чем я смогу перейти на Vaadin 14.
2 ответа
Просто чтобы люди знали, как я решил эту проблему, основываясь на комментариях:
- При загрузке данных в сетку сначала проверьте базу данных на наличие столбцов этой комбинации сетка / пользователь. Если вы найдете такой порядок столбцов, позвоните
setColumnOrder(userColumns)
. - Вверху добавлены 2 кнопки: одна для сохранения порядка столбцов, одна для его сброса.
- Кнопка «Сохранить» активируется только после перемещения хотя бы одного столбца.
- Кнопка «Сбросить» активна, только если был перемещен хотя бы один столбец. Один столбец был перемещен либо из-за БД, либо из-за того, что пользователь ПРОСТО переместил столбец.
- При сохранении сохраните в БД. При сбросе очистите базу данных и восстановите сетку до исходного порядка столбцов.
Мы решили не сохранять порядок столбцов каждый раз, когда они меняли порядок, непосредственно в addColumnReorderListener
, потому что мы поняли, что иногда пользователи могут временно перемещать столбцы, и очень хочется сохранить этот порядок столбцов на будущее. Тем не менее, сохранение внутри addColumnReorderListener
прошло хорошо.
В настоящее время нам не нужно сохранять размеры столбцов, как предлагает @Simon Martinelli, но мы сохраняем это как идею на будущее. Я полностью уверен, что это сработает.
Для более настраиваемой сетки вы можете (в дополнение к тому, что вы уже сделали) добавить кнопку, которая открывает диалоговое окно, в котором перечислены все возможные имена столбцов вместе с флажком. Снятие флажка удаляет столбец, установка флажка добавляет столбец.
Еще удобнее, когда в диалоговом окне перечислены все доступные столбцы в Grid
с перетаскиваемыми строками и редактируемыми флажками, так что пользователь может отображать, скрывать и сортировать все столбцы в одном месте. После этого вам нужно изменить порядок всех столбцов, вызвав grid.setColumnOrder
.
Похожие вопросы
Новые вопросы
vaadin
Vaadin - это платформа с открытым исходным кодом для разработки веб-приложений. Платформа Vaadin включает в себя набор веб-компонентов, веб-инфраструктуру Java и набор инструментов.