【问题标题】:How does paging work in asp.net?分页在 asp.net 中是如何工作的?
【发布时间】:2011-04-02 14:46:22
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    来自MSDN

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

    所以答案是,它并没有真正进行有效的“分页”,就像 Web 表单的许多方面一样,它都被抽象掉了。这并不是真正的“SELECT TOP 10”。

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

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

    例如

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-10
        • 2011-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多