【问题标题】:Pagination through Sql query通过Sql查询进行分页
【发布时间】:2012-11-03 08:44:33
【问题描述】:

我正在开发一个使用网格视图的应用程序。我想通过使用 sql 查询为该网格视图使用分页。

我想在pagesizepageindex 的帮助下显示记录。

如何使用 sql 查询来做到这一点?

【问题讨论】:

  • 感谢解决方案。它可以正常工作,但现在如果我有 20 条记录,因此您的解决方案会给出结果,但下一页索引消失了,我该怎么办?

标签: c# sql sql-server sql-server-2005 gridview


【解决方案1】:

我想通过使用 sql 查询为该网格视图使用分页。

我想借助pagesize和pageindex来显示记录。

将两个参数传递给sql查询@pageindex@pagesize,就可以使用ROW_NUMBER()函数进行分页。类似于以下内容:

;With CTEForPagination AS  
(
   SELECT ROW_NUMBER() OVER(ORDER BY SomeFieldToOrderBy) AS RowNum,  * 
   FROM YourTableReference
)
SELECT *   
FROM CTEForPagination
WHERE RowNum BETWEEN ((@PageIndex - 1) * @PageSize + 1)
    AND (@PageIndex * @PageSize)
ORDER BY AnotherFieldToOrderBy
--This is just an example

Example Demo

【讨论】:

  • 感谢解决方案。它可以正常工作,但现在如果我有 20 条记录,因此您的解决方案会给出结果,但下一页索引消失了,我该怎么办?
  • @user1661897 - 您的应用程序应该管理@pageIndex 参数的值,以便每次单击下一个按钮,它应该与上一个按钮一样递增。您还应该注意第一页和最后一页
【解决方案2】:
WITH EmpOrdered AS
(   
SELECT
Lastname,
ROW_NUMBER() Over (ORDER BY Lastname) AS rownum  
FROM Employees
)
SELECT e.*
FROM Employees e
INNER JOIN EmpOrdered ON e.Lastname = EmpOrdered.Lastname
WHERE EmpOrdered.rownum BETWEEN 1000 AND 1050
ORDER BY EmpOrdered.rownum ASC

【讨论】:

    【解决方案3】:

    试试这个

    CREATE PROCEDURE GetUserByPaging
    (
        @PageSize int,
        @PageIndex int
    )
    AS
        /* SET NOCOUNT ON */
    declare 
        @StartRow int,
        @EndRow int
    
        if(@PageIndex < 1)
          Set @PageIndex = 1
    
        Set @StartRow = (@PageSize * (@PageIndex - 1)) + 1
        Set @EndRow = @PageSize * @PageIndex
    
    
    SELECT * FROM(
        SELECT
           ROW_NUMBER() Over(Order By u.UserID) RowNumber,
           u.UserID,
           u.UserName
        FROM 
            Users u) u
        WHERE 
            ((u.RowNumber Between @StartRow AND @EndRow))
    

    【讨论】:

      猜你喜欢
      • 2018-06-09
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 2023-03-13
      • 2013-09-03
      • 1970-01-01
      • 2019-12-23
      • 2019-02-10
      相关资源
      最近更新 更多