0

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

我想在 和 的帮助下显示pagesize记录pageindex

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

4

3 回答 3

0

我想通过使用 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

示例演示

于 2012-11-03T08:45:56.250 回答
0
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
于 2012-11-03T09:02:00.137 回答
0

尝试这个

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))
于 2012-11-03T09:23:08.757 回答