GridView Web サーバー コントロール内でのページング
更新 : 2007 年 11 月
ASP.NET GridView コントロールは、基本的なページングをサポートする組み込みのページング機能を備えています。既定のページング ユーザー インターフェイス (UI) を使用するか、カスタム ページング インターフェイスを作成できます。
GridView コントロール内でのページングのしくみ
GridView コントロールは、自身のデータ ソースの項目に対してページングをサポートします。ページングを有効にするには、AllowPaging プロパティを true に設定します。GridView コントロールは、次のいずれかの方法でページングをサポートします。
GridView コントロールが単一ページのデータを実行できるデータ ソース コントロールにバインドされている場合、GridView コントロールはその機能の利点を直接利用します。要求される行数は、PageSize プロパティで指定したページごとの行数と、データ ソースが合計の行数をサポートするかどうかによって変わります。
メモ : .NET Framework に用意されているデータ ソース コントロールの中では、ObjectDataSource コントロールのみが単一ページのデータを返します。
メモ : データ ソースを作成している場合 (ObjectDataSource コントロールのソース オブジェクトに SelectCountMethod メソッドを実装する場合など)、データのページ数を表示するときに、データ ソースから合計行数を返すことを強く推奨します。こうすることで、データのページ数を取得するために GridView コントロールが要求するレコード数が最小限になります。合計行数がソース データ オブジェクトから指定される場合、GridView コントロールは同時に 1 ページの行数のみを要求します。合計行数が指定されない場合、GridView コントロールは、(要求されたデータのページを表す行から開始して) データ ソースのすべての行を要求し、表示する行以外のすべての行を破棄します。
ページング機能を直接サポートしないデータ ソース コントロールに GridView コントロールがバインドされている場合や、GridView コントロールが DataSource プロパティを通じてコード内のデータ構造にバインドされている場合、GridView コントロールはすべてのデータ レコードをソースから取得してページングを実行します。この場合、現在のページのレコードだけが表示され、それ以外は破棄されます。この方法は、ICollection インターフェイス (データセットを含む) を実装するコレクションを GridView コントロールのデータ ソースが返す場合のみサポートされます。
メモ : データ ソースがページングを直接サポートせず、また ICollection インターフェイスも実装していない場合、GridView コントロールはページングを行うことができません。たとえば、SqlDataSource コントロールを使用し、その DataSourceMode プロパティを DataReader に設定している場合、GridView コントロールはページングを実装できません。
ページング設定とユーザー インターフェイスのカスタマイズ
GridView コントロールのページング ユーザー インターフェイスはさまざまな方法でカスタマイズできます。ページのサイズ (つまり、一度に表示される項目の数) は、PageSize プロパティを使用して設定できます。また、GridView コントロールの現在のページは、PageIndex プロパティを使用して設定できます。PagerSettings プロパティまたはページャ テンプレートを使用すると、さらにカスタム動作を指定できます。
ページング モード
PagerSettings プロパティを使用すると、AllowPaging プロパティを true に設定しているときに GridView コントロールが自動的に生成するページング ユーザー インターフェイス (UI) の外観をカスタマイズできます。GridView コントロールは、前後のナビゲーションを可能にする方向コントロールや、ユーザーが特定ページに移動できるようにする数値コントロールを表示できます。
GridView コントロールの PagerSettings プロパティは PagerSettings クラスに設定されます。ページング モードをカスタマイズするには、GridView コントロールの Mode プロパティを設定します。たとえば、ページング UI モードをカスタマイズするには、次のように設定します。
GridView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast
次のモードを使用できます。
ページャ コントロールの外観
GridView コントロールには、異なるページャ モードのテキストとイメージのカスタマイズに使用できる多数のプロパティが用意されています。たとえば、方向ボタンを使用したナビゲーションを許可した場合に表示されるテキストをカスタマイズするには、NextPageText プロパティと PreviousPageText プロパティを次の例のように設定してボタンをカスタマイズします。
GridView1.PagerSettings.NextPageText = "Click for next page"
GridView1.PagerSettings.PreviousPageText = "Click for previous page"
イメージを使用してページング コントロールの外観をカスタマイズすることもできます。PagerSettings クラスには、最初のページ、最後のページ、前のページ、および次のページを表示するためのコマンド ボタンが含まれています。
最後に、GridView コントロールの PagerStyle プロパティを TableItemStyle 値に設定すると、ページング コマンドの外観を制御できるようになります。
データ ページング テンプレート
GridView コントロールの AllowPaging プロパティを true に設定すると、GridView コントロールがページング用ユーザー インターフェイス (UI) コントロールを自動的に追加します。ページング用 UI は、PagerTemplate テンプレートを追加してカスタマイズします。実行するページング操作を指定するには、CommandName プロパティを Page に設定し、CommandArgument を次の値のいずれかに設定した Button コントロールを含めます。
First 最初のページに移動します。
Last 最後のページに移動します。
Prev 前のページに移動します。
Next 次のページに移動します。
数値 指定したページに移動します。
ページング イベント
GridView コントロールが新しいページのデータに移動すると 2 つのイベントが発生します。PageIndexChanging イベントは、GridView コントロールがページング操作を実行する前に発生します。PageIndexChanged イベントは、新しいページのデータが GridView コントロールに返された後に発生します。
必要な場合は、PageIndexChanging イベントを使用してページング操作をキャンセルするか、GridView コントロールが新しいページのデータを要求する前にタスクを実行します。PageIndexChanged イベントを使用すると、ユーザーが異なるページのデータに移動した後にタスクを実行できます。