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

r7xajy2e  于 2022-12-22  发布在  jQuery
关注(0)|答案(2)|浏览(149)

即使在这个我非常喜欢的ajax example中,当顶级网格被排序时,你正在做的"状态"也会"消失"
例如,
打开第一个人所在的行(Nancy Davolio),以便您可以看到Sales网格
按"销售额"网格中的"订单合计"排序
在顶层网格中按出生日期排序
南希·达沃伊洛现在应该排第二。打开她的座位。
销售网格不再按订单总计排序
这可能看起来微不足道,或者我太挑剔了;然而:
如果我在销售网格上有一些文本框(或其他类型的接受用户输入的方法),我会假设在对顶层网格排序时,这些文本框会被破坏;我还会认为,即使在顶层网格上有这些输入,对顶层网格排序(或如果有筛选器,则进行筛选)也会破坏这些输入。
似乎连分页都破坏了这一点。
所需的行为是排序和分页不只是"看起来"是在客户端完成的,因为它使用了ajax请求,而是实际上是在客户端完成的,这意味着网格的实际行是按字面排序的(过滤的、分页的等)客户端侧,从而任何客户端侧改变诸如向文本框添加文本,向对象添加CSS类,[或者在一个更复杂的示例中,通过Jquery将对javascript对象的引用添加到对象中:$("#div1").data("object",someObject)将在排序、分页和过滤之后持续存在。
有什么办法能让这一切发生吗?
我说清楚我想做什么了吗?如果没有,我很乐意澄清。
补充说明:我认为这样做对客户端性能的影响是最小的,只要没有太多的行。事实上,在服务器上重新创建所有记录、重复调用服务器/数据库的工作会少得多,就像我在顶部的例子一样,子页面只需要创建一次而不是两次。

kmbjn2e3

kmbjn2e31#

查看MasterTableView的HierarchyLoadMode属性。您引用的演示使用HierarchyLoadMode.ServerOnDemand,根据Telerik's documentation,这意味着ViewState仅维护可见项的状态。因此,当详细信息网格折叠时,您将丢失其状态(例如,排序顺序、页码等)。
还有其他模式。您可以选择HierarchyLoadMode.ServerBind,它维护所有详细信息表的ViewState,但需要回发来展开详细信息表。HierarchyLoadMode.Client呈现MasterTableView,所有DetailTables和项都在客户端上展开/折叠-不需要回发。这两种模式中的任何一种还应维护排序顺序和与详细信息表相关的其他状态。
我希望这能帮助回答你的问题。

j1dl9f46

j1dl9f462#

我最近收到了Telerik支持的回复,他们 AJAX 网格支持客户机开箱即用的绑定,只支持平面结构的排序、分页和过滤(如this demo)。
对于您的情况,您可能有两种选择:

相关问题