動的に変化するデータを監視する「ダッシュボード」アプリケーションのグリッドで一般的であるように、私の(Telerik)Kendo UIグリッドは、60秒ごとに定期的に新しいデータで更新されます。
grid.dataSource.data(freshData);
grid.refresh(); // have been informed this refresh may not be necessary
スキーマは変更されませんが、一部の新しい行がデータセットに表示され、一部が削除された可能性があります。
リーフはグループ化をそのまま残し、grid.refresh()
ソート状態も保持されますが、折りたたまれたグループは展開されます。
質問:グループの拡張/折りたたみ状態を保持(または復元)する方法(したがって、他のグループが折りたたみた状態で特定の拡張グループに焦点を合わせているユーザーは、すべてのグループが再拡張される定期的な更新によって不便/イライラすることはありませんデフォルト)?
編集:一部のWinformsグリッドは、データを更新する前にグループの展開/折りたたみ状態の「スナップショットを作成」し、データソースの更新後にその状態を再適用する方法を提供します。Kendo UIグリッドのグループヘッダー行にUID(更新後も存続)が含まれている場合は、それを実行できます。 ただし、永続的なUIDを含まない以下の推奨アプローチを参照してください。
ユースケース:これは、この機能の典型的な、やや劇的なユースケースです。米国疾病対策センターは、特定のインフルエンザ株の発生を都市ごとにリアルタイムで監視しています。15秒ごとに、データセットが更新されます。彼らはたまたまロサンゼルスに焦点を合わせており、その都市は拡大し、他の都市は崩壊しました。15秒ごとにグリッド全体が拡大すると、CDCの医師が怒り、プログラマーの首を絞め、家に帰ってゴルフをし、ロサンゼルスの全員が屈服します。剣道は本当にその災害の責任を負いたいですか?
考えられる機能拡張の提案:上記のUIDに関する私の提案は無視してください。これがより良い方法です。グリッドには
<div class="k-group-indicator" data-field="{groupedByDataFieldName}">
...
</div>
ここで、そのk-group-indicator divに、の個別の値のリストを含めることができ、data-field
各キーの関連データが対応するセクションの展開/折りたたみ状態である場合、作成する前にそのリストをバッファーに保存することができます。 dataSource.data(someNewData)メソッドを呼び出してから、dataBoundイベントをリッスンするイベントハンドラーで、これらの展開状態を再適用できます。k-grouping-row
グループ化値に対応するグループ化セクションを見つけるには、特定のグループ化セクションのグループ化値を保持するというプロパティを指定できると非常に役立ちます。group-data-value
たとえば、データでグループ化する場合は「Sales」や「Marketing」などです。部門と呼ばれるフィールド。
<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>
そしてk-grouping-row
: <tr class="k-grouping-row" group-data-value="Sales">