我在我的asp.net页面中使用网格视图,我从SQL Server获取数据并放入网格视图。
现在我的问题是,我正在使用分页并在网格视图中每页放置50行。我想在启动时从数据库中获取前50行并绑定到网格视图,当我点击下一页时,再次转到数据库并获取第二个前50行并绑定到GV。并且这个过程一直持续到从数据库中取出最后一行。
你能告诉我如何编写Query来实现这个吗?
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:1)
阅读有关SQL分页的更多信息,有几种方法http://www.codeguru.com/csharp/.net/net_data/article.php/c19611/Paging-in-SQL-Server-2005.htm
答案 3 :(得分:1)