telerik radGrid - 在排序/分页/过滤器上保持客户端状态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了telerik radGrid - 在排序/分页/过滤器上保持客户端状态相关的知识,希望对你有一定的参考价值。

即使在我真正喜欢的ajax example中,当顶层网格被排序时,你正在做的“状态”“消失”

例如,

打开第一个人的行(Nancy Davolio),这样你就可以看到Sales网格

按销售网格中的订单总计排序

按顶级网格中的出生日期排序

Nancy Davoilo现在应该排在第二位。打开她的排。

销售网格不再按订单总额排序

这可能看起来微不足道,或者说我很挑剔;然而:

如果我在销售网格上有一些文本框(或其他一种接受用户输入的方法),我会假设在排序顶级网格时会被破坏。我也认为即使我在顶级网格上有这个输入,对顶级网格进行排序(或者如果有过滤器则进行过滤)会破坏此输入。

似乎即使是分页也会破坏这一点。

所需的行为将是排序和分页,而不只是“出现”在客户端完成,因为它使用ajax请求,但实际上是客户端完成。这意味着网格的实际行按字面顺序排序(过滤,分页等)客户端,以便任何客户端更改,例如向文本框添加文本,向对象添加css类,[或更复杂示例通过Jquery将javascript对象的引用添加到对象:$("#div1").data("object",someObject)将在排序,分页和过滤后保留。

有没有办法让这种情况发生?

我正在制作我想要做的事情吗?如果不是,我很乐意澄清。

附加说明:只要不存在大量行,我认为客户端性能影响很小,可以做这样的事情。实际上,在重新创建所有记录,重复调用服务器/数据库时,服务器上的工作量会少很少,而在顶部的示例中,子页面只需要创建一次而不是两次。

答案

看一下MasterTableView的HierarchyLoadMode属性。您引用的演示使用的是HierarchyLoadMode.ServerOnDemand,根据Telerik's documentation,它表示ViewState仅维护可见项的状态。因此,当细节网格折叠时,您将失去其状态(例如排序顺序,页码等)。

还有其他模式。您可以选择HierarchyLoadMode.ServerBind为所有详细信息表维护ViewState,但需要PostBack来扩展详细信息表。 HierarchyLoadMode.Client呈现MasterTableView,所有DetailTables和项目都在客户端上展开/折叠 - 不需要PostBack。这些模式中的任何一个都应该维护排序顺序以及与详细信息表相关的其他状态。

我希望这有助于回答你的问题。

另一答案

我最近得到了Telerik支持的答复,他们的AJAX网格支持客户端绑定开箱即用,只有平面结构的排序,分页和过滤(如this demo)。

对于您的情况,您可以有两种选择:

以上是关于telerik radGrid - 在排序/分页/过滤器上保持客户端状态的主要内容,如果未能解决你的问题,请参考以下文章

telerik:RadGrid 在表格中编辑更新数据

导出到telerik radgrid的Excel

telerik:RadGrid 分组自动展开

从 javascript 访问 Telerik RadGrid 编辑模式

获取 Telerik RadGrid 的行

如何使用 JavaScript 刷新 Telerik RadGrid 控件?