
概要
WPF の XamDataGrid コントロールで GroupBy によるグループ化を行った際に、グループ行を折りたたんだ状態でも Summary(集計行)を表示する方法 について説明します。FieldLayoutSettings の GroupBySummaryDisplayMode プロパティを使用することで実現できます。
対象コントロール
- Infragistics WPF — XamDataGrid
問題
XamDataGrid で GroupBy によりデータをグループ化した場合、既定の設定ではグループ行を展開しないと Summary(集計行)が確認できません。グループ行を折りたたんだ状態でも、各グループの集計値を表示したいケースがあります。
解説
GroupBySummaryDisplayMode プロパティを設定する
FieldLayoutSettings の GroupBySummaryDisplayMode プロパティを SummaryCellsAlwaysBelowDescription に設定することで、グループ行の説明テキストの下に、各フィールドの列位置に揃ったセル形式で Summary が表示されるようになります。
GroupBySummaryDisplayMode の主な設定値は以下のとおりです。
| 設定値 | 説明 |
|---|---|
| Default(Text) | 既定の動作。集計値がグループ行の説明にプレーンテキストとして付加されます。各集計は列名に続けて値が表示され、複数の集計はカンマで区切られます。 |
| SummaryCellsAlwaysBelowDescription | 各集計が、対応するフィールドの列位置に揃ったセルとして、グループ行の説明の下に表示されます。 |
手順は以下のとおりです。
- FieldLayoutSettings に GroupBySummaryDisplayMode=”SummaryCellsAlwaysBelowDescription” を設定する
- FieldLayout.SummaryDefinitions に表示したい集計(Count、Sum など)を定義する
- FieldSettings の SummaryDisplayArea プロパティは 設定しない(設定するとグリッド下部の固定 Summary 行の動作になるため)
サンプルコード
XAML
<igDP:XamDataGrid.FieldLayoutSettings>
<igDP:FieldLayoutSettings
GroupBySummaryDisplayMode="SummaryCellsAlwaysBelowDescription" 👈
... />
</igDP:XamDataGrid.FieldLayoutSettings>
...
<igDP:FieldLayout.SummaryDefinitions>
<igDP:SummaryDefinition SourceFieldName="MGC_PRODUCT_NAME"
Calculator="Count"
StringFormat="合計"/>
<igDP:SummaryDefinition SourceFieldName="AVAILABLE_AREA"
Calculator="Sum"
StringFormat="{}{0:#,###,##0}"/>
</igDP:FieldLayout.SummaryDefinitions>
まとめ
| プロパティ | コード | 説明 |
|---|---|---|
| GroupBySummaryDisplayMode | GroupBySummaryDisplayMode = “SummaryCellsAlwaysBelowDescription” | FieldLayoutSettings に設定することで、グループ行の説明の下に集計セルが表示される。 |