Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过Sql查询分页_C#_Sql_Sql Server_Sql Server 2005_Gridview - Fatal编程技术网

C# 通过Sql查询分页

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

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

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

如何使用sql查询实现这一点

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

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))