ASP.NET GridView 上的客户端分页

问题描述 投票:0回答:3

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

我们让它正常工作,以便它可以正常返回所有数据,并将其显示在 ASP.NET GridView 中。为了加快巨大网格的渲染速度,我们决定实现客户端分页,但我不太确定如何去做。

目前,我们将全部数据存储在 ViewState 中,然后基于此进行分页和排序,以避免再次访问服务器。

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

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

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

asp.net gridview pagination
3个回答
3
投票

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

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


2
投票

我们遇到过 Viewstate 本身成为性能问题的情况,并且必须想出方法来解决类似的情况...

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

例如?来自 Web 服务的数据多久更改一次?您也许可以执行以下操作之一:

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

0
投票

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

http://tablesorter.com/docs/

© www.soinside.com 2019 - 2024. All rights reserved.