如何在asp.net中进行分页?

时间:2010-08-23 12:02:53

标签: asp.net .net-3.5 gridview paging

我很想知道asp.net中的分页是如何工作的? 如果我的查询返回500条记录,并且我的gridview页面限制为每页25条记录,那么当gridview加载时,记录集是否会返回25条记录或500条记录?

如果记录集返回25条记录,那么ado如何与SQL通信以返回第二页的记录?

如果记录集返回500条记录,它们是否在客户端缓存?

2 个答案:

答案 0 :(得分:4)

来自MSDN

  

GridView控件将执行   通过获取所有数据进行分页   来自源的记录,显示   只有当前页面的记录,   并放弃其余的。

所以答案是,它并没有真正有效的“分页”,就像Web Forms的许多方面一样,它都被抽象掉了。它并没有真正做到“选择前十名”。

它只是忽略了它不需要的记录 - 但是DB调用仍然是“SELECT *”。

这就是为什么许多人(包括我自己)喜欢用LINQ编写自定义但简单的分页,使用Skip和Take IEnumerable扩展方法。

E.g

yourDbContext.Where(s => somePredicate).Skip((pageNum - 1) * pageSize).Take(pageSize);

答案 1 :(得分:0)

您可能希望通过javascript依赖客户端分页方法。 jqGrid是一个优秀的基于jQuery的解决方案。当然,这意味着您必须在页面上加载整个数据。否则,您需要编写存储过程以从特定页面返回数据。但在这种情况下,您必须实现自己的分页技术。您创建的此类存储过程必须始终返回两个结果集。一个返回实际数据,另一个返回基本分页信息的结果集,如总记录数,总页数和&当前页面。