ListView
基本的に、および でページングを有効にするとObjectDataSource
、データ ソースは現在のページ番号とページ サイズをデータ プロバイダー クラス ( で設定したクラス) に渡しますObjectDataSource
。
これが実際の例です:
http://netpl.blogspot.com/2009/04/how-to-controll-aspnet-listview-page.html
具体的には、データ プロバイダー クラスを見てくださいPersonDataSource
。
public class PersonDataSource
{
public IEnumerable<Person> Retrieve( int StartRow, int RowCount )
{
return DataModel.Instance.Persons.Skip( StartRow ).Take( RowCount );
}
public int CountItems()
{
return DataModel.Instance.Persons.Count;
}
}
プロバイダーは自由に実装できます。つまり、オブジェクトをメモリから取得したり、データベースから取得したり、ORM を使用したり、SqlCommand
. 制限なし。
アプリケーション レベルでページングを実装するのではなく、ページングされたクエリを作成します。アプリケーション レベルでのページングとは、データベースからデータを取得し、アプリケーション レベルでフィルター処理することを意味します。これは通常、データベース レベルでのフィルター処理よりもパフォーマンスの点で劣ります。
独自のページング クエリを作成する場合は、ROW_NUMBER を使用するかどうかに関係なく、少なくともいくつかの方法があります。