默认情况下,Telerik RadGrid(ASP.NET AJAX的UI)和Kendo UI网格控件在刷新网格时重置所有组展开/折叠状态。 Kendo网格甚至不允许指定默认的展开/折叠状态。到目前为止我找到的所有解决方案都是不完整或有缺陷的。
以下是我在网上各种电传和社区示例中未能完全提供的内容:
答案 0 :(得分:1)
我在这个问题上花了一些时间,并开发了一套扩展器模块,可以很好地适应许多网格场景。此解决方案适用于AJAX回发刷新和客户端数据刷新,并且可与Kendo UI Grid一起使用(有关详细信息,请参阅示例和代码)。
扩展器类基本上遍历网格的DOM(尽可能利用可用的Telerik客户端API)并保存"完整路径组密钥"在数组中。由于它使用完整路径来保存/恢复状态,因此即使数据发生更改以及多个父项中存在重复的子组标题,它也会起作用。不依赖于跟踪服务器上不断变化的行索引值。这是Kendo UI的100%客户端功能,主要是ASP.Net RadGrid的客户端功能(一些数据需要在预渲染时添加到RadGrid组头元素,因为它的客户端API缺少一些关键方法/数据)。
我不会在这里发布代码,因为扩展程序非常冗长,但它只是为了暴露5种方法。它应该适用于大多数RadGrid和Kendo Grid场景。要获取最新的源代码,请转到this GitHub repository。扩展器非常有条理,因此您应该能够轻松解决并轻松调整以满足您的特定需求。