次の 2 つの記事で説明されているロジックを使用する ASP.NET 4 GridView コントロールがあります。
ASP.NET 4.5 プロパティはこれをどのようにGridView.AllowCustomPaging
簡素化しますか?
使用方法に関する記事へのリンクは大歓迎です。
次の 2 つの記事で説明されているロジックを使用する ASP.NET 4 GridView コントロールがあります。
ASP.NET 4.5 プロパティはこれをどのようにGridView.AllowCustomPaging
簡素化しますか?
使用方法に関する記事へのリンクは大歓迎です。
私の最近の経験では、そうではありません。
具体的には、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()メソッドをソースに自動的に適用します。結果の必要なページのみがデータベースから返されます。簡単!PageIndex
PageSize
(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
私はプロパティを使用することを期待していました(ここで説明されているように) が、私が知る限り、totalRowCount
out-parameter はVirtualItemCount
プロパティを不要にします。
(1)または(2)が実装されていない場合、GridView は例外をスローします
。 int totalRowCount
そのため、ASP.NET 4.5 で GridView カスタム ページングを実装しましたがGridView.AllowCustomPaging
、GridView.VirtualItemCount
どこにも表示されません。