Siatka Telerik Kendo UI: grupowanie i sortowanie przetrwają grid.refresh (), ale zwinięte grupy są rozszerzane; jak zachować stan

Jak to jest typowe dla siatek w aplikacji „deski rozdzielczej”, która monitoruje dynamicznie zmieniające się dane, moja siatka interfejsu użytkownika (Telerik) Kendo jest odświeżana świeżymi danymi okresowo, co 60 sekund:

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

Schemat się nie zmienia, ale niektóre nowe wiersze mogą pojawić się w zbiorze danych, a niektóre mogły zostać usunięte.

Chociażgrid.refresh() pozostawia nienaruszone grupy, a stan sortowania jest również zachowany, wszelkie zwinięte grupy są rozszerzane.

PYTANIE: Jak zachować (lub przywrócić) rozszerzony / zwinięty stan grup (więc użytkownik skupiający się na konkretnej rozwiniętej grupie z innymi grupami nie jest zawalony / sfrustrowany okresowymi aktualizacjami, w których każda grupa zostaje ponownie rozwinięta przez domyślna)?

EDYCJA: Niektóre siatki Winforms umożliwiają „zrobienie migawki” stanu rozwinięcia / zwinięcia grupy przed odświeżeniem danych, a następnie ponowne zastosowanie tego stanu po odświeżeniu źródła danych.Jeśli wiersze nagłówka grupy w sieci Kendo UI miały identyfikatory UID (które przetrwały odświeżanie), można to zrobić. Ale zobacz sugerowane poniżej podejście, które nie obejmuje trwałych identyfikatorów UID.

PRZYKŁAD UŻYTKOWANIA: Oto typowy, choć nieco dramatyczny, przypadek użycia tej funkcji. Centrum Kontroli Chorób monitoruje wybuchy konkretnej grypy w czasie rzeczywistym według miasta. Co 15 sekund zestaw danych jest odświeżany. W tej chwili skupiają się na Los Angeles i rozbudowują to miasto, a inne miasta upadły. Jeśli co 15 sekund cała siatka się rozszerza, to wkurza lekarzy z CDC, a oni wchodzą i uduszają programistę, a potem idą do domu, żeby zagrać w golfa, a wszyscy w Los Angeles ulegają. Czy Kendo naprawdę chce być odpowiedzialny za tę katastrofę?

MOŻLIWE FUNKCJE WZMOCNIENIE PROBLEM: Zignoruj ​​moją sugestię dotyczącą UID powyżej. Oto lepszy sposób. Sieć ma

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

Teraz, jeśli ten wskaźnik k-grupy-wskaźnika mógłby zawierać listę różnych wartościdata-field przy czym dane powiązane z każdym kluczem są stanem rozwiniętym / zwiniętym odpowiedniej sekcji, wówczas możliwe byłoby zapisanie tej listy w buforze przed wywołaniem metody dataSource.data (someNewData), a następnie w nasłuchu obsługi zdarzeń dla danych dataBound wydarzenia, te rozszerzone państwa mogłyby zostać ponownie zastosowane. Aby znaleźć odpowiednią sekcję grupowania dla wartości grupowania, byłoby bardzo pomocne, jeślik-grouping-row może mieć nieruchomość o nazwiegroup-data-value która posiadała wartość grupowania danej sekcji grupowania, np. „Sprzedaż” lub „Marketing”, jeśli grupowano według pola danych o nazwie Dział.

<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>

a następnie wk-grouping-row: <tr class="k-grouping-row" group-data-value="Sales">

questionAnswers(4)

yourAnswerToTheQuestion