3

次の 2 つの記事で説明されているロジックを使用する ASP.NET 4 GridView コントロールがあります。

ASP.NET 4.5 プロパティはこれをどのようにGridView.AllowCustomPaging簡素化しますか?

使用方法に関する記事へのリンクは大歓迎です。

4

1 に答える 1

5

私の最近の経験では、そうではありません。

具体的には、ASP.NET 4.5 のモデル バインドシステムを使用しているときに、効率的な GridView カスタム ページング (非常に大きなデータベース テーブルから必要なページのデータのみを取得する) を実装すると、GridView.AllowCustomPagingプロパティが入力されませんでした。

GridView.SelectMethodプロパティを設定すると、モデル バインドが使用されます。これにより、ObjectDataSource を必要とせずに (リンクで説明されているように) 「ObjectDataSource スタイル」の機能が提供されます。このアプローチには、次の 2 つのオプションがあります。

(1) で指定されたメソッドは をGridView.SelectMethod返しますIQueryable。例:

public IQueryable<MyClass> MySelectMethod1()
{
    return myService.GetAll(someCriteria);
}

IQueryable をプレゼンテーション層に公開することを気にしない場合、これは非常に効率的なページングを実装するための非常に高速な方法です。実行時に、フレームワークは、GridView のプロパティとプロパティに基づいて、Skip() メソッドと Take()メソッドをソースに自動的に適用します。結果の必要なページのみがデータベースから返されます。簡単!PageIndexPageSize

(2) によって指定されたメソッドGridView.SelectMethodは、他のバインド可能なオブジェクトを返します

public IList<MyClass> MySelectMethod2(int startRowIndex, int maximumRows, out int totalRowCount)
{
    totalRowCount = myService.GetCount(someCriteria);
    return myService.GetPage(someCriteria, startRowIndex, maximumRows);
}

totalRowCount を設定することで、データベースから必要なページのデータのみを取得しながら、Pager を正しくレンダリングするために必要なすべての情報を GridView に提供しました。

VirtualItemCount私はプロパティを使用することを期待していました(ここで説明されているように) が、私が知る限り、totalRowCountout-parameter はVirtualItemCountプロパティを不要にします。

(1)または(2)が実装されていない場合、GridView は例外をスローします
。 int totalRowCount

そのため、ASP.NET 4.5 で GridView カスタム ページングを実装しましたがGridView.AllowCustomPagingGridView.VirtualItemCountどこにも表示されません。

于 2012-12-27T10:25:46.167 に答える