行詳細は、行(レコード)に関連する追加情報を別の展開可能なレイヤの形で提供する機能です。 この場合、最初のレイヤである行には基本情報が含まれ、2 番目のレイヤには詳細な情報が含まれます。この機能は、追加情報が多過ぎて使用可能な画面内に表示できない場合や、レコードごとの追加情報に一貫性がない場合に特に便利です。
FlexGrid は、IC1FlexGridRowDetail インタフェースを使用して行詳細機能を提供します。詳細行に置かれる詳細コントロールは、このインタフェースを実装します。また、FlexGrid は、InputPanel および FlexGrid というテンプレートユーザーコントロールを独立したアセンブリ C1.Win.C1FlexGrid.RowDetails.4.5.2.dll で提供しており、これらのコントロールを詳細行ですぐに使用できます。FlexGrid の任意の行に詳細セクションを追加でき、データを 1 つのテンプレートにグループ化してオプションで表示することができます。これにより、ユーザーは、行を選択するだけで、その行に関連する追加データを表示できます。また、グリッドには、組み込みの展開/折りたたみボタンも用意されており、展開可能な行内のデータの表示/非表示を制御できます。
行詳細機能がよく使用されるシナリオには、次のようなものがあります。
これらのシナリオの実装方法について、以下のセクションで説明します。
FlexGrid は、詳細行に InputPanel コントロールを置くことで、フォーム内編集をサポートします。InputPanel コントロールには、フォームと同様に、ユーザーが値を入力したり編集することができるデータフィールドが含まれます。ユーザーがフィールドの編集を終了すると、値が選択した行に反映されます。
FlexGrid でフォーム内編集を実装するには、C1.Win.C1FlexGrid.RowDetails.4.5.2.dll への参照を追加し、IC1FlexGridRowDetail インタフェースを実装済みの C1InputPanelRowDetail クラスを使用します。次に、このクラスのインスタンスを C1FlexGrid クラスの RowDetailProvider プロパティに割り当てます。これにより、InputPanel コントロールが詳細行に追加され、フォーム内編集が可能になります。
階層ビューは、マスター/詳細モデルのことです。最上位レベルのグリッドを「マスターグリッド」、グリッド内グリッドを「詳細グリッド」と言います。詳細グリッドには、マスターグリッドで展開された行に関する追加情報が表示されます。たとえば、次の例で示されているマスター/詳細構造では、Customer テーブルと Order テーブルが使用されています。これらのテーブルはどちらも、関係を定義する共通のデータ要素として CustomerID を持っています。
FlexGrid で階層グリッドを実装するには、C1.Win.C1FlexGrid.RowDetails.4.5.2.dll への参照を追加し、IC1FlexGridRowDetail インタフェースを実装済みの C1FlexGridRowDetail クラスを使用します。次に、このクラスのインスタンスを C1FlexGrid クラスの RowDetailProvider プロパティに割り当てて、詳細行に別のグリッドをネストします。これで、階層グリッドインタフェースを作成できます。
グリッドの詳細行には、InputPanel コントロールと FlexGrid コントロールのほかに、カスタムコントロールを置くこともできます。たとえば、次の例では、テキストラベルコントロールが行にアタッチされ、グリッドのサイズに影響を与えることなく追加情報を得ています。
FlexGrid でカスタム行詳細を実装するには、IC1FlexGridRowDetail インタフェースを実装するユーザーコントロールを作成する必要があります。たとえば、次のコードでは、詳細行に置かれるテキストラベルコントロールを表す CustomRowDetail というクラスを作成しています。次に、このクラスのオブジェクトを C1FlexGrid クラスの RowDetailProvider プロパティに割り当てて、カスタムコントロールが詳細行に追加情報を表示できるようにしています。