从sqlserver获取Top(开始no,Ending no)行

时间:2012-09-13 09:36:31

标签: c# asp.net sql sql-server sql-server-2008

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

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

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

4 个答案:

答案 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

Live Demo

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

答案 3 :(得分:1)