3

asp.net ページでグリッド ビューを使用しており、SQL Server からデータを取得してグリッド ビューに配置しています。

今私の問題は、ページングを使用して、ページごとに 50 行をグリッド ビューに配置していることです。起動時にデータベースから上位 50 行を取得してグリッド ビューにバインドし、次のページをクリックすると、再びデータベースに移動して 2 番目の上位 50 行を取得し、GV にバインドします。このプロセスは、最後の行がデータベースからフェッチされるまで続行する必要があります。

これを達成するためのクエリの書き方を教えてもらえますか??

4

4 に答える 4

5

@pageNum通常、このクエリにはとの2 つのパラメーターが渡されます。@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

ROW_NUMBER() を使用して GridView のページングを試してみると、その方法についてのアイデアが得られます。

また、SQL Server - Row_number() 関数を使用したサーバー側のページングも役立ちます。

于 2012-09-13T10:15:37.013 に答える
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 に答える