ASP.NET GridView上的客户端分页

时间:2011-12-14 20:54:07

标签: asp.net gridview paging

我有一个客户想要从Web服务返回一个ENORMOUS查询,并且不会让步。他们坚持认为查询必须能够完全返回所有内容,并且它们也不允许我们进行任何类型的服务器端分页。

我们让它工作,以便它可以很好地返回所有数据,并将它显示在ASP.NET GridView中。为了加快巨大网格的渲染速度,我们决定实现客户端分页,但我不确定如何解决这个问题。

目前,我们将整个数据存储在ViewState中,然后根据该页面进行分页和排序,以避免再次访问服务器。

但是,使用默认设置时,尝试选择除第一个页面之外的任何页面时,都会返回404错误。我猜这是因为它在尝试通过ViewState发送大量数据时超时。

有没有办法返回数据集,然后在客户端上进行所有的分页和排序,而不必进行任何类型的回发?还是有其他方法可以做到这一点,我们没有想到? (除了服务器端分页。我们很乐意这样做,因为它显然是正确的方式,但客户端不会让步......)

编辑:如果可能的话,我想坚持使用ASP.NET GridView控件。我们已经找到了几个不同的选项,比如jQuery等,但是如果我们改为不同类型的控件,我们还有很多东西需要改变。所以我想尽可能避免改变它。

3 个答案:

答案 0 :(得分:3)

如果时间对您来说不是一个大问题,那么从数据库中获取所有记录所需的时间我相信在客户端,网格通常呈现为HTML表,而不是使用jquery插件将在客户端对表进行分页。

http://www.codeproject.com/KB/webforms/clientside_gridviewpaging.aspx

答案 1 :(得分:2)

我们遇到了Viewstate本身成为性能问题的情况,并且不得不想办法解决类似问题...

您的选择很大程度上取决于问题中未包含的一些细节。

例如?来自Web服务的数据多久会发生变化?您可以执行以下操作之一:

  • 将结果保存在缓存或会话中(如果结果很大,则不是一个好主意......)
  • 将结果序列化为Xml文件,并在分页时从中读取
  • 定期将数据导入SQL数据库或SQL数据库中的临时表,并使用一些标识符将数据绑定到用户。

答案 2 :(得分:0)

我使用jquery tablesorter插件好运。它提供了一些很好的选择。

http://tablesorter.com/docs/