Telerik Kendo 和 ASP.Net 网格:在客户端保留组 Expand/Collapse 状态

Telerik Kendo and ASP.Net Grids: Preserve Group Expand/Collapse state on client

默认情况下,Telerik RadGrid(UI for ASP.NET AJAX)和 Kendo UI 网格控件重置所有组 expand/collapse刷新网格时的状态。 Kendo 网格甚至不允许指定默认的 expand/collapse 状态。到目前为止我找到的所有解决方案要么不完整要么有问题。

这是我正在寻找的内容,但在网络上的各种 telerik 和社区示例中并不完全可用:

我在这个问题上花了一些时间,并开发了一组扩展器模块,可以很好地处理许多网格场景。此解决方案适用于 AJAX post 后台刷新和客户端数据刷新,并且适用于 Kendo UI 网格(详情请参阅示例和代码)。

扩展器 class 基本上遍历网格的 DOM(尽可能利用可用的 Telerik 客户端 API)并将 "full path group keys" 保存在数组中。因为它使用 save/restore 状态的完整路径,所以即使数据发生变化并且在多个 parents 中存在重复的 sub-group header 时,它也能正常工作。不依赖于跟踪服务器上的 ever-changing 行索引值。这是 Kendo UI 的 100% client-side 功能,主要是 ASP.Net RadGrid 的 client-side 功能(一些数据需要添加到 RadGrid 组 header pre-render 上的元素,因为它的 client-side API 缺少一些关键的 methods/data).

我不会post这里的代码,因为扩展程序很长,但它被设计为仅公开 5 个方法。它应该适用于大多数 RadGrid 和 Kendo 网格场景。要获取最新的源代码,请转到 this GitHub repository。扩展器组织得非常好,因此您应该能够弄清楚并轻松调整以满足您的特定需求。