英語で読む

次の方法で共有


Windows フォーム DataGridView コントロールのデータ表示モード

DataGridView コントロールは、バインド、バインド解除、仮想の 3 つの異なるモードでデータを表示できます。 要件に基づいて最適なモードを選択します。

縛られていない

非バインド モードは、プログラムで管理する比較的少量のデータを表示するのに適しています。 バインド モードのように、DataGridView コントロールをデータ ソースに直接アタッチしません。 代わりに、DataGridViewRowCollection.Add メソッドを使用して、コントロールを自分で設定する必要があります。

非バインド モードは、静的な読み取り専用データや、外部データ ストアと対話する独自のコードを提供する場合に特に便利です。 ただし、ユーザーが外部データ ソースと対話する場合は、通常、バインド モードを使用します。

読み取り専用の非連結 DataGridViewを使用する例については、「方法: バインドされていない Windows フォーム DataGridView コントロールを作成するを参照してください。

拘束された

バインド モードは、データ ストアとの自動対話を使用してデータを管理するのに適しています。 DataGridView コントロールをデータ ソースに直接アタッチするには、DataSource プロパティを設定します。 コントロールがデータ バインドされている場合、データ行はプッシュおよびプルされ、ユーザー側で明示的に管理する必要はありません。 AutoGenerateColumns プロパティが trueされると、データ ソース内の各列に対応する列がコントロールに作成されます。 独自の列を作成する場合は、このプロパティを false に設定し、DataPropertyName プロパティを使用して各列を構成するときにバインドできます。 これは、既定で生成される型以外の列型を使用する場合に便利です。 詳細については、「Windows フォーム DataGridView コントロールの列型」を参照してください。

バインドされた DataGridView コントロールを使用する例については、「チュートリアル: Windows フォーム DataGridView コントロールでのデータの検証」を参照してください。

バインドモードで、バインドされていない列を DataGridView コントロールに追加することもできます。 これは、ユーザーが特定の行に対してアクションを実行できるようにするボタンまたはリンクの列を表示する場合に便利です。 バインドされた列から計算された値を持つ列を表示する場合にも便利です。 CellFormatting イベントのハンドラーで、計算列のセル値を設定できます。 ただし、データ ソースとして DataSet または DataTable を使用している場合は、DataColumn.Expression プロパティを使用して計算列を作成することもできます。 この場合、DataGridView コントロールは、データ ソース内の他の列と同様に計算列を扱います。

バインド モードでの非連結列による並べ替えはサポートされていません。 ユーザーが編集可能な値を含むバインド モードでバインドされていない列を作成する場合は、コントロールがバインドされた列で並べ替えられるときにこれらの値を維持する仮想モードを実装する必要があります。

バーチャル

仮想モードでは、独自のデータ管理操作を実装できます。 これは、コントロールがバインドされた列で並べ替えられるときに、バインドモードでバインドされていない列の値を維持するために必要です。 ただし、仮想モードの主な用途は、大量のデータを操作するときにパフォーマンスを最適化することです。

DataGridView コントロールは管理するキャッシュにアタッチし、コードはデータ行がプッシュおよびプルされるタイミングを制御します。 メモリフットプリントを小さく保つために、キャッシュのサイズは現在表示されている行数と同じにする必要があります。 ユーザーが新しい行をスクロールしてビューに移動すると、コードはキャッシュから新しいデータを要求し、必要に応じてメモリから古いデータをフラッシュします。

仮想モードを実装する場合は、データ モデルで新しい行が必要なタイミングと、新しい行の追加をロールバックするタイミングを追跡する必要があります。 この機能の正確な実装は、データ モデルの実装とデータ モデルのトランザクション セマンティクスによって異なります。コミット スコープがセルレベルか行レベルか。

仮想モードの詳細については、「Windows フォーム DataGridView コントロールでの仮想モードの 」を参照してください。 仮想モード イベントの使用方法を示す例については、「チュートリアル: Windows フォーム DataGridView コントロールでの仮想モードの実装」を参照してください。

関連項目