次の方法で共有


GridView Web サーバー コントロールでのデータの並べ替え

更新 : 2007 年 11 月

GridView コントロールには、コーディングが不要な並べ替え機能が組み込まれています。GridView コントロールの並べ替え機能をカスタマイズするには、列のカスタム SortExpression プロパティ値を使用すると共に、Sorting イベントと Sorted イベントを使用します。

GridView コントロールでの並べ替えの動作

GridView コントロールは、それ自体で列の並べ替えを実行するのではなく、データ ソース コントロールに並べ替えを実行させます。このコントロールには、グリッドの各列の上部に表示される LinkButton コントロールなど、並べ替え用のユーザー インターフェイス (UI) があります。ただし、データの並べ替え機能については、GridView コントロールはバインドされているデータ ソース コントロールに依存します。

バインドされたデータ ソース コントロールがデータの並べ替えを実行できる場合、GridView コントロールはデータ ソース コントロールと対話し、データが選択されたときに SortExpression をデータ ソースに渡すことで、並べ替えられたデータを要求できます。データ ソース コントロールによっては、XmlDataSource コントロールなど、並べ替えをサポートしないものがありますが、データ ソース コントロールが並べ替えをサポートしていれば、GridView からその機能を利用できます。並べ替えをサポートする各データ ソース コントロールと、並べ替えのサポートに必要な構成を次に示します。

  • SqlDataSource コントロールと AccessDataSource コントロールは、DataSourceMode プロパティに DataSet が設定されているか、SortParameterName プロパティに DataSet または DataReader のいずれかが設定されている場合、並べ替えを実行できます。

  • ObjectDataSource コントロールは、基になるオブジェクトでサポートされている値が SortParameterName プロパティに設定されている場合に並べ替えを実行できます。

GridView の並べ替え処理

GridView コントロールで既定の並べ替え動作を有効にするには、AllowSorting プロパティに true を設定します。このプロパティに true を設定すると、GridView コントロールは LinkButton コントロールを列ヘッダーに表示します。このコントロールでは、各列の SortExpression プロパティに、それぞれがバインドされているデータ フィールドの名前が暗黙的に設定されます。たとえば、Northwind サンプル データベースの従業員テーブルの [City] 列を表示する列がグリッドに存在する場合、その列の SortExpression プロパティには [City] が設定されます。

実行時に列ヘッダーの LinkButton コントロールをクリックすると、その列を基準にして並べ替えることができます。リンクをクリックすると、ページがポストバックを実行し、GridView コントロールの Sorting イベントが発生します。イベント引数の一部として並べ替え式 (既定では、データ列の名前) が渡されます。Sorting イベントの既定の動作では、GridView コントロールが並べ替え式をデータ ソース コントロールに渡します。データ ソース コントロールは、グリッドから渡された並べ替えパラメータを含む選択クエリまたは選択メソッドを実行します。

クエリが実行された後は、グリッドの Sorted イベントが発生します。このイベントにより、ステータス メッセージの表示など、クエリ後のロジックを実行できます。最後に、データ ソース コントロールは、並べ替えられたクエリの結果に GridView コントロールを再バインドします。

GridView コントロールは、データ ソース コントロールが並べ替えをサポートするかどうかを確認せず、常に並べ替え式をデータ ソースに渡します。データ ソース コントロールが並べ替えをサポートしていない場合に GridView コントロールで並べ替え処理が実行されると、GridView コントロールは NotSupportedException 例外をスローします。この例外を Sorting イベントのハンドラでキャッチすると、データ ソースをチェックして並べ替えがサポートされているか、または独自の並べ替えロジックを使用することによって並べ替えがサポートされるかを判断できます。

各列の並べ替えの制御

既定では、グリッドの AllowSorting プロパティを設定すると、列を並べ替えられるようになります。個別のフィールド (たとえば BoundField フィールド、TemplateField フィールドなど) について並べ替えを無効にするには、各列の SortExpression プロパティに空の文字列 ("") を設定します。

カスタムの並べ替え

既定の並べ替え動作が適さない場合は、グリッドの並べ替え動作をカスタマイズできます。カスタムの並べ替えを行う場合は、Sorting イベントを処理するのが基本的な手法です。ハンドラでは、次の処理を実行できます。

  • データ ソース コントロールに渡される並べ替え式をカスタマイズします。既定では、並べ替え式は 1 つの列の名前です。この並べ替え式はイベント ハンドラで変更できます。たとえば、2 つの列を基準にして並べ替えを実行する場合は、両方の列を含む並べ替え式を作成できます。その後、変更した並べ替え式をデータ ソース コントロールに渡すことができます。詳細については、GridViewSortEventArgs.SortExpression プロパティを参照してください。

  • 独自の並べ替えロジックを作成します。たとえば、並べ替えをサポートしていないデータ ソースを使用する場合に、独自のコードで並べ替えを実行してから、並べ替えたデータにグリッドをバインドできます。

参照

概念

ASP.NET のデータ バインド Web サーバー コントロールの概要