4

ドキュメントでは、IEnumerable (linq を使用してページと並べ替えを行う) にバインドする方法のみが示されています。

これを行うための最良の方法について、誰かがガイドラインや指針を提供できますか?

4

3 に答える 3

6

カスタムバインディングを使用する必要があります。リンクされた例は、現在のページを取得する方法を示しています。

于 2010-08-05T11:16:42.773 に答える
3

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 
于 2010-08-04T12:43:02.687 に答える
0

RoadWarrior はページング sproc の良い例を示し、korchev はカスタム バインディングについて指摘しています。

実際には、データが IEnumerable の形式で取得されている限り、データの取得元は関係ありません。そのため、データ アクセス コードを記述し、データを List に取得した後、カスタム バインドは簡単です。

于 2010-11-22T15:34:06.743 に答える