Сетка пользовательского интерфейса Telerik Kendo: группировка и сортировка сохраняются grid.refresh (), но свернутые группы расширяются; как сохранить государство
Как это типично для сетки в "приборная доска" приложение, которое отслеживает динамически изменяющиеся данные, моя (Telerik) сетка пользовательского интерфейса Kendo обновляется свежими данными периодически, каждые 60 секунд:
grid.dataSource.data(freshData);
grid.refresh(); // have been informed this refresh may not be necessary
Схема не изменяется, но некоторые новые строки могут отображаться в наборе данных, а некоторые могут быть удалены.
Хотяgrid.refresh()
оставляет группировки нетронутыми, и состояние сортировки также сохраняется, все свернутые группы расширяются.
ВОПРОС: Как сохранить (или восстановить) развернутое / свернутое состояние групп (чтобы пользователь, сосредоточенный на конкретной расширенной группе с другими свернутыми группами, не испытывал неудобств / разочарований от периодических обновлений, в которых каждая группа повторно раскрывается дефолт)?
РЕДАКТИРОВАТЬ: некоторые сетки Winforms предоставляют способ "сделай снимок группы развернуть / свернуть состояние перед обновлением данных, а затем повторно применить это состояние после обновления источника данных.Если бы строки заголовка группы в сетке пользовательского интерфейса Kendo имели UID (которые пережили обновление), это можно было бы сделать. Но посмотрите предложенный ниже подход, который не включает постоянные UID.
СЛУЧАЙ ИСПОЛЬЗОВАНИЯ: Вот типичный, но несколько драматичный вариант использования этой функции. Центр по контролю заболеваний контролирует в реальном времени вспышки определенного штамма гриппа по городам. Каждые 15 секунд набор данных обновляется. В данный момент они сосредоточены на Лос-Анджелесе, и этот город расширился, а другие города рухнули. Если каждые 15 секунд вся сетка расширяется, это бесит врачей в CDC, и они входят и душат программиста, а затем они идут домой, чтобы играть в гольф, и все в Лос-Анджелесе уступают. Кендо действительно хочет быть ответственным за это бедствие?
ВОЗМОЖНОЕ ПРЕДЛОЖЕНИЕ ОБСЛУЖИВАНИЯ ФУНКЦИЙ: игнорируйте мое предложение о UID выше. Вот'лучший способ. Сетка имеет
...
Теперь, если этот div-индикатор k-группы может содержать список различных значенийdata-field
с каждым ключомЕсли связанные данные являются развернутым / свернутым состоянием соответствующего раздела, то можно было бы сохранить этот список в буфере перед вызовом метода dataSource.data (someNewData), а затем в обработчике событий, прослушивающем событие dataBound, эти расширенные состояния могут быть повторно применены. Чтобы найти соответствующий раздел группировки для значения группировки, было бы очень полезно, если быk-grouping-row
может иметь свойство под названиемgroup-data-value
который содержал значение группировки конкретного раздела группировки, например, "Продажи" или же "Маркетинг» если бы кто-то группировал по полю данных, названному Отделом.
...
а затем в:k-grouping-row