Copyright © GrapeCity inc. All rights reserved.
True DBGrid for WinForms
階層化データの表示
データ表示テクニック > データの表示 > 階層化データの表示

True DBGrid for WinForms は、階層化されたデータを表示できます。一般に、階層化データは、複数のリレーショナルテーブルに格納されているデータを参照します。リレーショナルテーブルでは、マスターテーブル(親テーブル)がキーフィールドによって詳細テーブル(子テーブル)にリンクされます。データを階層表示すると、最初にマスターデータが表示され、ユーザーは、クリックするだけで、同じグリッド内に関連する詳細データを表示できます。

グリッドをマスター/詳細データソースに連結する場合は、水平テーブル領域(バンド)を使って階層化データの関連グループを表示します。バンドは、データそのものではなく、階層 DataSet を仮想的に表現したものです。バンドは、階層レコードセット内の各レベルごとに作成され、テーブル全体または選択された少数のフィールドだけを入れることができます。実行時、ユーザーは、ツリー表示に似たインタフェースを使用して、バンドを展開したり、折りたたむことができます。

この機能を使用するには、DataView プロパティをDataViewEnum.Hierarchicalに設定する必要があります。また、グリッドコントロールを階層化された DataSet に連結する必要があります。その1つの方法として、DataSource プロパティを使用します。

次の図に、2つのテーブルの関係を例示します。この図は、.NET xsd ファイルエディタ画面の例です。ここでは、Composer テーブルと Opus テーブルが関連付けられています。どちらのテーブルにも Last フィールドがあり、このフィールドが両方のテーブルの主キーになっています。また、Composer テーブルと Opus テーブルの Last フィールドはどちらも同じものです。そこで、このフィールドに基づいて2つのテーブルを連結すると、これらのテーブルによる階層化 DataSet を作成できます。

バンドとグリッドの階層表示を使用することによって、この階層化 DataSet をグリッドに表示できます。3つの手順を踏むだけで、上の DataSet を C1TrueDBGrid に表示できます。次にその手順を示します。

  1. まず、グリッドのDataSource プロパティを階層化 DataSet に設定する必要があります。この例では、DataSet の名前は dsMasterDetail1 です。
  2. 次に、グリッドのDataMember プロパティを DataSet の親テーブルに設定する必要があります。これにより、グリッドに最初に表示するテーブルを設定できます。この例では、親テーブルは Composer です。
  3. 最後に、グリッドを階層表示に切り替えます。DataView プロパティを DataViewEnum.Hierarchical に設定すると、グリッドに上のデータセットがバンド構造で表示されます。

実行時、グリッドには読み取り専用のデータが表示されます。次の図は、グリッドの表示例です。最初にマスターレコードセット(Composer)のデータが表示され、詳細レコードセットバンドのフィールドが右側に表示されます。ただし、詳細レコードセットのフィールドには、最初はデータが含まれていません。レコードの左端の展開アイコン( + )が、階層化データがあることを示しています。

ユーザーが展開アイコンをクリックすると、アイコンは折りたたみアイコン( - )に変わり、横のバンド(Orders)が展開して、クリックした行の詳細レコードが表示されます。

メモ:C1TrueDBGrid DataView プロパティがデフォルト値のDataViewEnum.Normalに設定されている場合、グリッドにはフラットファイルだけが表示され、階層表示はサポートされません。データソースが階層化されたDataSetであっても、グリッドに表示されるのは、マスターテーブルのデータだけです。

DataView プロパティは設計時に設定する必要があります。実行時には変更できません。

階層表示のグリッドを操作するために、次のメソッドが用意されています。

メソッド 説明
GetBand 指定された列インデックスに対応するバンドを返す。
CollapseBand 指定されたバンドのすべての行を折りたたむ。
ExpandBand 指定されたバンドのすべての行を展開する。
RowExpanded 指定されたバンド内で現在の行が展開されている場合は、True を返す。

マスター/詳細データソース内のレコードセットのレベル数が事前にわからない場合は、コード内で Bands プロパティを調べます。利用できるバンドの数は、0から -1 までです。

アプリケーションで次のイベントを使用すると、ユーザーによって開始された階層表示操作に応答できます。

イベント 説明
Collapse ユーザーがバンドを折りたたむと発生する。
Expand ユーザーがバンドを展開すると発生する。
関連トピック