【发布时间】:2011-12-14 20:54:07
【问题描述】:
我有一个客户想要从 Web 服务返回一个 ENORMOUS 查询,并且不会让步。他们坚信查询必须能够返回绝对所有内容,而且他们也不允许我们进行任何类型的服务器端分页。
我们让它正常工作,以便它可以很好地返回所有数据,并且我们将它显示在 ASP.NET GridView 中。为了加快巨大网格的渲染速度,我们决定实现客户端分页,但我不确定如何去做。
目前,我们将全部数据存储在 ViewState 中,然后根据它进行分页和排序,以避免再次访问服务器。
但是,在默认设置下,当尝试选择除第一个以外的任何页面时,它会返回 404 错误。我猜这是因为它在尝试通过 ViewState 发送大量数据集时超时。
有没有什么方法可以返回数据集,然后在客户端上进行所有的分页和排序,而无需进行任何形式的回发?还是有其他我们没有想到的方法来做到这一点? (除了服务器端分页。我们很乐意这样做,因为它显然是正确的方式,但客户端不会让步......)
编辑:如果可能的话,我想坚持使用 ASP.NET GridView 控件。我们已经找到了几个不同的选项,比如 jQuery 之类的,但是如果我们更改为不同类型的控件,我们还有很多东西需要更改。所以我想尽可能避免改变它。
【问题讨论】:
-
我会推荐使用基于 Java 脚本的网格。如果你对 JQuery 没问题,dataTable 对你来说很好。
-
是否禁止使用 AJAX 进行部分回发?还是只是完整的回发?
-
AJAX 完全没问题。任何东西都是一种选择,只要它不必再次与数据库对话。
-
作为曾经打过这场仗的人,我很同情。我使用
Repeater控件来尽可能加快渲染速度,但是如果您已经连接了很多事件,那么切换可能会很痛苦。