C# 通过Sql查询分页
我正在开发一个使用网格视图的应用程序。我想通过使用sql查询对该网格视图使用分页 我想在pagesize和pageindex的帮助下显示记录 如何使用sql查询实现这一点 我想通过使用sql查询对该网格视图使用分页 我想在pagesize和pageindex的帮助下显示记录 通过向sql查询@pageindex和@pagesize传递两个参数,您可以使用ROW_NUMBER函数进行分页。如下所示:C# 通过Sql查询分页,c#,sql,sql-server,sql-server-2005,gridview,C#,Sql,Sql Server,Sql Server 2005,Gridview,我正在开发一个使用网格视图的应用程序。我想通过使用sql查询对该网格视图使用分页 我想在pagesize和pageindex的帮助下显示记录 如何使用sql查询实现这一点 我想通过使用sql查询对该网格视图使用分页 我想在pagesize和pageindex的帮助下显示记录 通过向sql查询@pageindex和@pagesize传递两个参数,您可以使用ROW_NUMBER函数进行分页。如下所示: ;With CTEForPagination AS ( SELECT ROW_NUMBE
;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
试试这个
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))
谢谢你的解决方案。它可以工作,但是现在如果我有20条记录,你的解决方案会给出结果,但是下一页索引消失了,那么我能做什么呢?@user1661897-你的应用程序应该管理@pageIndex参数的值,这样每次单击next按钮,它应该与上一页的值一样递增。您还应该注意第一页和最后一页解决方案的感谢。它正在工作,但现在如果我有20条记录,相应地,您的解决方案会给出结果,但下一页索引消失,那么我可以为此做些什么?
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))