Grade de interface do usuário do Telerik Kendo: o agrupamento e a classificação sobrevivem a grid.refresh (), mas os grupos recolhidos são expandidos; como preservar o estado

Como é típico para as grades em um aplicativo de "painel" que monitora dados dinâmicos, minha grade de interface do Kendo (Telerik) é atualizada com dados atualizados periodicamente, a cada 60 segundos:

grid.dataSource.data(freshData);
grid.refresh();  // have been informed this refresh may not be necessary

O esquema não muda, mas algumas novas linhas podem aparecer no conjunto de dados e algumas podem ter sido removidas.

Apesar degrid.refresh() deixa os agrupamentos intactos e o estado de classificação também é preservado, todos os grupos recolhidos são expandidos.

PERGUNTA: Como preservar (ou restaurar) o estado expandido / recolhido dos grupos (para que um usuário que se concentra em um determinado grupo expandido com os outros grupos recolhidos não seja incomodado / frustrado pelas atualizações periódicas nas quais cada grupo é reexpandido por padrão)?

EDIT: Algumas grades Winforms fornecem uma maneira de "tirar uma foto" do estado de expansão / colapso do grupo antes de atualizar os dados e, em seguida, reaplicar esse estado após a atualização da fonte de dados.Se as linhas do cabeçalho do grupo na grade do Kendo UI tivessem UIDs (que sobreviveram a uma atualização), isso poderia ser feito. Mas veja a abordagem sugerida abaixo que não envolve UIDs persistentes.

CASO DE USO: Aqui está um caso de uso típico, embora um tanto dramático, para esse recurso. O Center for Disease Control está monitorando os surtos em tempo real de uma cepa específica da gripe, por cidade. A cada 15 segundos, o conjunto de dados está sendo atualizado. Eles estão se concentrando no momento em Los Angeles e essa cidade se expandiu, e as outras cidades entraram em colapso. Se a cada 15 segundos a rede inteira se expande, isso irrita os médicos do CDC e eles entram e estrangulam o programador e então vão para casa jogar golfe, e todo mundo em Los Angeles sucumbe. O Kendo realmente quer ser responsável por esse desastre?

SUGESTÃO DE MELHORIA DE RECURSOS POSSÍVEIS: Ignore minha sugestão sobre um UID acima. Aqui está um jeito melhor. A grade tem

<div class="k-group-indicator" data-field="{groupedByDataFieldName}">
    ...
</div>

Agora, se esse div do indicador de grupo-k puder conter uma lista dos valores distintos dedata-field com os dados associados de cada chave sendo o estado expandido / recolhido da seção correspondente, seria possível salvar essa lista em um buffer antes de fazer uma chamada para o método dataSource.data (someNewData) e, em seguida, no manipulador de eventos que está atendendo a dataBound evento, esses estados de expansão podem ser reaplicados. Para encontrar a seção de agrupamento correspondente ao valor do agrupamento, seria muito útil se ok-grouping-row poderia ter uma propriedade chamadagroup-data-value que manteve o valor de agrupamento da secção de agrupamento particular, e. "Vendas" ou "Marketing" se um estivesse agrupando por um campo de dados chamado Departamento.

<div class="k-group-indicator" data-field="dept" data-title="Dept" data-dir="asc">
       ...
   <div class="k-group-distinct-values">
     <div group-data-value="Sales" aria-expanded="false" />
     <div group-data-value="Events Planning" aria-expanded="true" />
   </div>  
</div>

e depois nok-grouping-row: <tr class="k-grouping-row" group-data-value="Sales">

questionAnswers(4)

yourAnswerToTheQuestion