我在我的 asp.net 页面中使用网格视图,我正在从 SQL Server 获取数据并放置在我的网格视图中。
现在我的问题是,我正在使用分页并在网格视图中每页放置 50 行。我想在启动时从数据库中获取前 50 行并绑定到网格视图,当我单击下一页时,然后再次转到数据库并获取第二个前 50 行并绑定到 GV。并且这个过程必须继续,直到从数据库中获取最后一行。
你能告诉我如何编写查询来实现这个吗?
我在我的 asp.net 页面中使用网格视图,我正在从 SQL Server 获取数据并放置在我的网格视图中。
现在我的问题是,我正在使用分页并在网格视图中每页放置 50 行。我想在启动时从数据库中获取前 50 行并绑定到网格视图,当我单击下一页时,然后再次转到数据库并获取第二个前 50 行并绑定到 GV。并且这个过程必须继续,直到从数据库中获取最后一行。
你能告诉我如何编写查询来实现这个吗?
通常,您将有两个参数传递给此查询,@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
你可以创建一个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
阅读有关 SQL 分页的更多信息,有几种方法http://www.codeguru.com/csharp/.net/net_data/article.php/c19611/Paging-in-SQL-Server-2005.htm
尝试使用 ROW_NUMBER() 对 GridView 进行分页,您将了解如何执行此操作。