グリッドに販売データなどのデータを表示する場合に、国別または製品別の販売データなど、特定のカテゴリを集計したいことがあります。
それは、C1FlexGrid コントロールを使用して簡単に行うことができます。XAML マークアップまたはコードのいずれかで、集計する列の GroupAggregate プロパティを設定するだけです。このプロパティを設定すると、C1FlexGrid が自動的に集計を行い、その値がグループヘッダー行に表示されます。
次のグリッド定義で説明します。
XAML |
コードのコピー
|
---|---|
<c1:C1FlexGrid x:Name="c1FlexGrid1" AutoGenerateColumns="False" ShowOutlineBar="True" BorderThickness="1"> <c1:C1FlexGrid.Columns> <c1:Column Binding="{Binding Name}" Width="*"/> <c1:Column Binding="{Binding Line}" /> <c1:Column Binding="{Binding Color}" /> <c1:Column Binding="{Binding Price}" Format="c2" Width="*"/> <c1:Column Binding="{Binding Weight}" Format="n2" Width="*" /> <c1:Column Binding="{Binding Cost}" Format="c2" Width="*"/> <c1:Column Binding="{Binding Volume}" Width="*"/> <c1:Column Binding="{Binding Rating}" Format="n2" Width="*"/> <c1:Column Binding="{Binding Discontinued}" Width="*"/> </c1:C1FlexGrid.Columns> </c1:C1FlexGrid> |
製品種目別にデータをグループ化するように構成された C1CollectionView オブジェクトを ItemsSource プロパティに設定すると、C1FlexGrid で項目をグループ化できます。データを集計する前に、グループ化の方法を確認するには、このリンクを参照してください。
FlexGrid は、項目をグループ化できるだけではありません。[Price]、[Weight]、[Cost]、[Volume]、[Rating]の各列の合計を表示する場合、XAML マークアップは次のようになります。
XAML |
コードのコピー
|
---|---|
<c1:C1FlexGrid x:Name="c1FlexGrid1" AutoGenerateColumns="False" ShowOutlineBar="True" BorderThickness="1"> <c1:C1FlexGrid.Columns> <c1:Column Binding="{Binding Name}" Width="*"/> <c1:Column Binding="{Binding Line}" /> <c1:Column Binding="{Binding Color}" /> <c1:Column Binding="{Binding Price}" Format="c2" GroupAggregate="Sum" Width="*"/> <c1:Column Binding="{Binding Weight}" Format="n2" GroupAggregate="Sum" Width="*" /> <c1:Column Binding="{Binding Cost}" Format="c2" GroupAggregate="Sum" Width="*"/> <c1:Column Binding="{Binding Volume}" GroupAggregate="Sum" Width="*"/> <c1:Column Binding="{Binding Rating}" Format="n2" GroupAggregate="Average" Width="*"/> <c1:Column Binding="{Binding Discontinued}" Width="*"/> </c1:C1FlexGrid.Columns> </c1:C1FlexGrid> |
[Rating]列は、平均値を集計するように設定されています。このように変更すると、C1FlexGrid コントロールは次の図のようになります。
列ヘッダーに各列の集計値が表示されます。