3

我在我的 asp.net 页面中使用网格视图,我正在从 SQL Server 获取数据并放置在我的网格视图中。

现在我的问题是,我正在使用分页并在网格视图中每页放置 50 行。我想在启动时从数据库中获取前 50 行并绑定到网格视图,当我单击下一页时,然后再次转到数据库并获取第二个前 50 行并绑定到 GV。并且这个过程必须继续,直到从数据库中获取最后一行。

你能告诉我如何编写查询来实现这个吗?

4

4 回答 4

5

通常,您将有两个参数传递给此查询,@pageNum然后@pageSize您可以这样做:

With ranked AS   --- Or you can make it a view
(
   SELECT ROW_NUMBER() OVER(ORDER BY OrderField) AS RowNum,  * 
   FROM YourTableReference
)
SELECT *   --Your fields here
FROM Ranked
WHERE RowNum BETWEEN ((@PageNum - 1) * @PageSize + 1)
                 AND (@PageNum * @PageSize)
ORDER BY SomeField

现场演示

于 2012-09-13T09:40:16.900 回答
2

你可以创建一个sproc

sp_fetcrangeofrecords
@st int,
@ed int

As
BEGIN
WITH CTE as (select row_number() over (order by (select 0)) as rn,* from your table)

select col1,col2,... from table where rn between @st and @ed
END
于 2012-09-13T09:41:37.810 回答
1

阅读有关 SQL 分页的更多信息,有几种方法http://www.codeguru.com/csharp/.net/net_data/article.php/c19611/Paging-in-SQL-Server-2005.htm

于 2012-09-13T09:40:26.870 回答
1

尝试使用 ROW_NUMBER() 对 GridView 进行分页,您将了解如何执行此操作。

SQL Server - 使用 Row_number() 函数的服务器端分页也会有所帮助。

于 2012-09-13T10:15:37.013 回答