FlexGrid for WinForms
グループ

グループ化とは、共通の列値を持つ行を 1 つのグループとして表示することで、グリッドデータを階層構造に構成することです。この機能を使用すると、グループを展開したり折りたたむことで、グリッドデータの分析を容易に行うことができます。

FlexGrid のグループ化は、コードまたはユーザー操作から行うことができます。ユーザー操作の場合は、列のコンテキストメニューと FlexGridGroupPanel コントロールを使用します。このトピックでは、これらの方法、およびグループ化に関連するその他の操作について説明します。

グループ化

コードによるグループ化

FlexGrid は、グリッド内のデータソース項目のグループ化方法を記述するために GroupDescriptions プロパティを提供しています。このプロパティは、IList インタフェース(例:List)を実装する任意のコレクションのインスタンスを値として受け取ります。コレクションの各項目は、グループ化の基準としてプロパティ名を使用してグループ化を記述します。

次のコードは、WinForms FlexGrid でコードを使用してグループ化を適用する方法を示します。

// CustomerIDでデータをグループ化します
c1FlexGrid1.GroupDescriptions = new List<GroupDescription>() { new GroupDescription("CustomerID") };
' CustomerIDでデータをグループ化します
c1FlexGrid1.GroupDescriptions = New List(Of GroupDescription)() From {
            New GroupDescription("CustomerID")
        }       

グループパネルによるグループ化

FlexGrid では、C1.Win.C1FlexGrid.GroupPanel アセンブリから提供される C1FlexGridGroupPanel という拡張コントロールを使用して実行時にグループを作成することもできます。

実行時に FlexGrid でグループ化を行えるようにするには、フォームに C1FlexGridGroupPanel コントロールを追加し、それを C1FlexGridGroupPanel クラスの FlexGrid プロパティを使用して、連結先のグリッドと連結します。グリッドがグループパネルコントロールに連結されたら、列をパネルにドラッグアンドドロップして、その列でグリッドをグループ化できます。ドラッグした列をネストして階層を作成するには、複数の列を任意の順序でドラッグします。 また、C1FlexGridGroupPanel クラスの MaxGroups プロパティを使用して、許可される最大グループ数を FlexGrid に設定することもできます。デフォルトでは、作成されたグループはすべて、展開された状態で表示されます。この設定を変更して、デフォルトでグループを折りたたまれた状態で表示するには、AutoExpandAllGroups プロパティを false に設定します。グループパネルコントロールには、どの列もパネルにドロップされていないときに表示する文字列として Text プロパティも用意されています。

グループパネルによるグループ化

FlexGridGroupPanel コントロールを使用して WinForms FlexGrid でグループ化を適用するには、次のコードを使用します。

C1FlexGridGroupPanel c1FlexGridGroupPanel = new C1FlexGridGroupPanel();
c1FlexGridGroupPanel.Bounds = new System.Drawing.Rectangle(0,0, 650, 150);
this.Controls.Add(c1FlexGridGroupPanel);
                                        
// C1FlexGridGroupPanelの一般プロパティを設定します
c1FlexGridGroupPanel.FlexGrid = c1FlexGrid1;
c1FlexGridGroupPanel.Text = "Drag the columns here..";
c1FlexGridGroupPanel.MaxGroups = 5;
c1FlexGridGroupPanel.AutoExpandAllGroups = true;            
    Dim c1FlexGridGroupPanel As C1FlexGridGroupPanel = New C1FlexGridGroupPanel()
    c1FlexGridGroupPanel.Bounds = New Drawing.Rectangle(0, 0, 650, 150)
    Me.Controls.Add(c1FlexGridGroupPanel)

    ' C1FlexGridGroupPanelの一般プロパティを設定します
    c1FlexGridGroupPanel.FlexGrid = c1FlexGrid1
    c1FlexGridGroupPanel.Text = "Drag the columns here.."
    c1FlexGridGroupPanel.MaxGroups = 5
    c1FlexGridGroupPanel.AutoExpandAllGroups = True

コンテキストメニューによるグループ化

FlexGrid では、実行時に列操作に関連するアクションをすばやく簡単に実行するために、列コンテキストメニューがサポートされています。このコンテキストメニューのオプションの 1 つに[この列でグループ化]があります。このコンテキストメニューオプションを使用して、実行時に任意の列でグリッドデータをグループ化できます。グループ化が適用されると、グループ化を削除するための[グループ化解除]オプションがメニューに追加されます。列コンテキストメニューを使用するには、C1FlexGrid クラスにある ColumnContextMenuEnabled プロパティを true に設定する必要があります。デフォルトでは、このプロパティは false に設定されています。

コンテキストメニューによるグループ化

// 列のコンテキストメニューを有効にします
c1FlexGrid1.ColumnContextMenuEnabled = true; 
' 列のコンテキストメニューを有効にします
c1FlexGrid1.ColumnContextMenuEnabled = True

その他のグループ化オプション

FlexGrid のグループ化には、デフォルトの機能のほかにもさまざまなオプションが用意されており、非常に柔軟に要件を満たすことができます。

関連トピック