Cuadrícula de la interfaz de usuario de Telerik Kendo: la agrupación y la clasificación sobreviven a grid.refresh () pero los grupos colapsados ​​se expanden; como preservar el estado

Como es típico de las cuadrículas en una aplicación de "panel" que controla los datos que cambian dinámicamente, mi cuadrícula de la interfaz de usuario de Kendo (Telerik) se actualiza periódicamente con datos nuevos, cada 60 segundos:

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

El esquema no cambia, pero algunas filas nuevas pueden aparecer en el conjunto de datos y algunas pueden haberse eliminado.

Aunque elgrid.refresh() deja las agrupaciones intactas, y el estado de clasificación también se conserva, cualquier grupo colapsado se expande.

PREGUNTA: Cómo conservar (o restaurar) el estado expandido / contraído de los grupos (por lo tanto, un usuario que se enfoca en un grupo expandido particular con los otros grupos colapsados ​​no es inconveniente / frustrado por las actualizaciones periódicas en las que cada grupo se vuelve a expandir defecto)?

EDITAR: algunas grillas de Winforms proporcionan una forma de "tomar una instantánea" del estado de expansión / contracción del grupo antes de actualizar los datos, y luego volver a aplicar ese estado después de la actualización del origen de datos.Si las filas del encabezado del grupo en la cuadrícula de la interfaz de usuario de Kendo tuvieran UID (que sobrevivieron a una actualización), se podría hacer. Pero vea el enfoque sugerido a continuación que no implica UID persistentes.

CASO DE USO: Este es un caso de uso típico, aunque un tanto dramático, para esta función. El Centro para el Control de Enfermedades está monitoreando los brotes en tiempo real de una cepa particular de gripe, por ciudad. Cada 15 segundos se actualiza el conjunto de datos. En este momento se están enfocando en Los Ángeles y han expandido esa ciudad, y las otras ciudades colapsaron. Si cada 15 segundos se expande toda la cuadrícula, molesta a los médicos en el CDC y ellos entran y estrangulan al programador y luego se van a casa a jugar golf, y todos en Los Ángeles sucumben. ¿Kendo realmente quiere ser responsable de ese desastre?

POSIBLE SUGERENCIA DE MEJORA DE CARACTERÍSTICAS: Ignorar mi sugerencia acerca de un UID anterior. Aquí hay una mejor manera. La rejilla tiene

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

Ahora, si ese div k-group-indicator podría contener una lista de los distintos valores dedata-field siendo los datos asociados de cada clave el estado expandido / contraído de la sección correspondiente, entonces sería posible guardar esa lista en un búfer antes de realizar una llamada al método dataSource.data (someNewData), y luego en el controlador de eventos escuchando datos. evento, esos estados expandidos podrían ser reaplicados. Para encontrar la sección de agrupación correspondiente para el valor de agrupación, sería muy útil si elk-grouping-row podría tener una propiedad llamadagroup-data-value que mantuvo el valor de agrupación de la sección de agrupación particular, por ejemplo, "Ventas" o "Marketing" si uno se agrupara por un campo de datos llamado 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>

y luego en elk-grouping-row: <tr class="k-grouping-row" group-data-value="Sales">

Respuestas a la pregunta(4)

Su respuesta a la pregunta