telerik radGrid - 在排序/分页/过滤器上保持客户端状态
Posted
技术标签:
【中文标题】telerik radGrid - 在排序/分页/过滤器上保持客户端状态【英文标题】:telerik radGrid - persist client state on sort/paging/filter 【发布时间】:2011-08-28 00:08:49 【问题描述】:即使在这个ajax example 我真的很喜欢它的外观,当***网格被排序时,你正在做的事情的“状态”“消失”
例如,
打开第一个人的行 (Nancy Davolio),这样您就可以看到销售网格
在销售网格中按订单总计排序
在顶层网格中按出生日期排序
南希·达沃洛现在应该排在第二位。打开她的行。
销售网格不再按订单总计排序
这可能看起来微不足道,或者我很挑剔;然而:
如果我在销售网格上有一些文本框(或其他类型的接受用户输入的方法),我会假设在对***网格进行排序时它会被破坏。 我还认为,即使我在***网格上有此输入,对***网格进行排序(或过滤如果有过滤器)也会破坏此输入。
似乎连分页都会破坏这一点。
所需的行为是排序和分页不仅仅是“看起来”在客户端完成,因为它使用 ajax 请求,但实际上是在客户端完成。这意味着网格的实际行在客户端是按字面排序(过滤、分页等)的,因此任何客户端都会发生变化,例如向文本框添加文本、向对象添加 css 类 [或更复杂的例如,通过 Jquery 向对象添加对 javascript 对象的引用:$("#div1").data("object",someObject)
将在排序、分页和过滤后持续存在。
有没有办法做到这一点?
我是否清楚地说明了我想要做的事情?如果不是,我很乐意澄清。
附加说明:我认为,只要行数不是很大,执行此类操作对客户端性能的影响就会很小。事实上,在服务器上重新创建所有记录、重复调用服务器/数据库的工作会少很多,并且在我的顶部示例中,子页面只需要创建一次而不是两次。
【问题讨论】:
我有一种悲伤的感觉,答案是没有 Telerik 支持的方法来做到这一点。我想我可以删除 Telerik 分页,让它为我创建所有行,然后隐藏并显示以自己进行分页。 (我可以手动控制telerik分页控件吗?)排序也一样,只是有一个函数接受行的所有id并在col上排序,然后返回排序后的id列表,然后我只需更改订购...我想我可以在所有客户端有效地做到这一点?虽然那时使用 Telerik 网格有什么意义? 【参考方案1】:查看 MasterTableView 的 HierarchyLoadMode 属性。您引用的演示使用HierarchyLoadMode.ServerOnDemand
,根据Telerik's documentation,这意味着 ViewState 仅维护可见项的状态。因此,当详细信息网格折叠时,您将失去其状态(例如排序顺序、页码等)。
还有其他模式。您可以选择HierarchyLoadMode.ServerBind
,它为所有明细表维护 ViewState,但需要 PostBack 才能展开明细表。 HierarchyLoadMode.Client
呈现 MasterTableView 并且所有 DetailTables 和项目在客户端上展开/折叠 - 不需要 PostBack。这两种模式中的任何一种都应该维护排序顺序和与详细信息表相关的其他状态。
我希望这有助于回答您的问题。
【讨论】:
然而,这个例子,在我试图实现的情况下,没有细节网格。相反,使用了一个嵌套视图模板,该模板包含一个包含一些 RadPageViews 的面板,其中包含一个信息 div 和另一个 RadGrid ......我的意思是没有实际的分层负载,但是我会尝试设置并让你知道效果。 所做的只是使加载主网格(或对其进行排序)需要很长时间,因为它必须加载包含在 pagviews 中的所有网格,并向下钻取以查看一行浏览量真的很快。至于这些问题中的任何一个,效果都没有变化。【参考方案2】:我最近收到 Telerik 支持的回复,他们的 AJAX 网格支持开箱即用的客户端绑定,仅具有平面结构的排序、分页和过滤(如this demo)。
对于您的情况,您可能有两种选择:
使用网格设置持久化扩展示例 - http://demos.telerik.com/aspnet-ajax/grid/examples/programming/savinggridsettingsonperuserbasis/defaultcs.aspx 实施自定义解决方案以模拟具有客户端绑定的层次结构,如 this blog post 中所示。【讨论】:
以上是关于telerik radGrid - 在排序/分页/过滤器上保持客户端状态的主要内容,如果未能解决你的问题,请参考以下文章