ドキュメントでは、IEnumerable (linq を使用してページと並べ替えを行う) にバインドする方法のみが示されています。
これを行うための最良の方法について、誰かがガイドラインや指針を提供できますか?
ドキュメントでは、IEnumerable (linq を使用してページと並べ替えを行う) にバインドする方法のみが示されています。
これを行うための最良の方法について、誰かがガイドラインや指針を提供できますか?
カスタムバインディングを使用する必要があります。リンクされた例は、現在のページを取得する方法を示しています。
Telerikグリッドをストアドプロシージャによって発行された結果セットにバインドする方法、またはストアドプロシージャにページングを実装する方法について話しているのですか?あなたの質問からは明らかではありません。
次のT-SQLストアドプロシージャは、ページングの非常に効率的な実装です。SQLオプティマイザーは、最初のIDを非常に高速に見つけることができます。これをROWCOUNTの使用と組み合わせると、CPU効率と読み取り効率の両方を備えたアプローチが得られます。行数が多いテーブルの場合、一時テーブルまたはテーブル変数を使用して見たどのアプローチよりも確実に優れています。
CREATE PROCEDURE dbo.PagingTest
(
@PageNumber int,
@PageSize int
)
AS
DECLARE @FirstId int, @FirstRow int
SET @FirstRow = ( (@PageNumber - 1) * @PageSize ) + 1
SET ROWCOUNT @FirstRow
-- Add check here to ensure that @FirstRow is not
-- greater than the number of rows in the table.
SELECT @FirstId = [Id]
FROM dbo.TestTable
ORDER BY [Id]
SET ROWCOUNT @PageSize
SELECT *
FROM dbo.TestTable
WHERE [Id] >= @FirstId
ORDER BY [Id]
SET ROWCOUNT 0
GO
RoadWarrior はページング sproc の良い例を示し、korchev はカスタム バインディングについて指摘しています。
実際には、データが IEnumerable の形式で取得されている限り、データの取得元は関係ありません。そのため、データ アクセス コードを記述し、データを List に取得した後、カスタム バインドは簡単です。