即使在这个阿贾克斯例子 http://demos.telerik.com/aspnet-ajax/grid/examples/hierarchy/nestedviewtemplate/defaultcs.aspx我真的很喜欢它的外观,当顶层网格被排序时,你正在做的事情的“状态”就会“消失”
例如,
打开第一个人的行 (Nancy Davolio),以便您可以看到销售网格
在销售网格中按订单总计排序
在顶级网格中按出生日期排序
南希·达沃伊洛现在应该排名第二。打开她的行。
销售网格不再按订单总计排序
这可能看起来微不足道,或者我很挑剔;然而:
如果我在销售网格上有一些文本框(或接受用户输入的其他类型的方法),我会假设在对顶级网格进行排序时这会被破坏。
我还认为,即使我在顶级网格上有此输入,对顶级网格进行排序(或如果有过滤器则进行过滤)也会破坏此输入。
看来即使分页也破坏了这一点。
所需的行为是排序和分页不仅“看起来”在客户端完成,因为它使用 ajax 请求,而且实际上是在客户端完成。这意味着网格的实际行在客户端按字面意思排序(过滤、分页等),以便任何客户端更改,例如向文本框添加文本、向对象添加 css 类,[或者以更复杂的方式通过 Jquery 将 javascript 对象的引用添加到对象的示例:$("#div1").data("object",someObject)
在排序、分页和过滤后仍会保留。
有办法实现这一点吗?
我是否清楚地表达了我想要做的事情?如果没有,我很乐意澄清。
附加说明:我认为只要没有大量的行,执行此类操作对客户端性能的影响就会很小。事实上,服务器上重新创建所有记录、重复调用服务器/数据库的工作量会减少很多,并且如我在顶部的示例所示,子页面只需要创建一次而不是两次。
看一下 MasterTableView 的 HierarchyLoadMode 属性。您引用的演示正在使用HierarchyLoadMode.ServerOnDemand
其中,根据Telerik 的文档 http://www.telerik.com/help/aspnet-ajax/grid-hierarchy-load-modes.html,意味着 ViewState 只维护可见项的状态。因此,当详细信息网格折叠时,您将丢失其状态(例如排序顺序、页码等)。
还有其他模式。你可以选择HierarchyLoadMode.ServerBind
它维护所有详细信息表的 ViewState,但需要回发来扩展详细信息表。这HierarchyLoadMode.Client
呈现 MasterTableView,所有 DetailTables 和项目在客户端上展开/折叠 - 不需要回发。这些模式中的任何一种还应该维护与详细表相关的排序顺序和其他状态。
我希望这有助于回答您的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)