FlexGrid for WPF 帮助文档
聚合数据

一旦您对数据进行了分组,则通常下一步有用的操作时计算这些分组的聚合值。例如,如果您将销售数据按国家或产品类别分组,您可以显示每个国家和产品类别的总销售额。为了使用C1FlexGrid实现这一点,可以设置列上的GroupAggregate属性为聚合,则Grid将自动地计算并显示聚合结果。当数据发生变化时,聚合结果将自动地重新计算。

请注意,聚合将出现在该分组的Header行中。设置Grid的AreGroupHeadersFrozen属性的值为False以使得其可见。

例如,考虑以下的Grid定义:

XAML
拷贝代码
<fg:C1FlexGrid x:Name="_flex" AutoGenerateColumns="False">
  <fg:C1FlexGrid.Columns>
    <fg:Column Header="Line" Binding="{Binding Line}" />
    <fg:Column Header="Color" Binding="{Binding Color}" />
    <fg:Column Header="Name" Binding="{Binding Name}" />
    <fg:Column Header="Price" Binding="{Binding Price}"
      Format="n2" HorizontalAlignment="Right" Width="*"/>
    <fg:Column Header="Cost" Binding="{Binding Cost}"
      Format="n2" HorizontalAlignment="Right" Width="*"/>
    <fg:Column Header="Weight" Binding="{Binding Weight}"
      Format="n2" HorizontalAlignment="Right" Width="*"/>
    <fg:Column Header="Volume" Binding="{Binding Volume}"
      Format="n2" HorizontalAlignment="Right" Width="*"/>
  </fg:C1FlexGrid.Columns>
</fg:C1FlexGrid>

如果您设置了Grid的ItemsSource为一个ICollectionView对象,该对象设置为按照“Line”,“Color”以及“Name”进行分组,则您将获得一个类似于下图的Grid:

该Grid以一个可折叠的大纲试图格式显示这些分组,并自动地显示在每一个分组中元素的个数。这一点和Microsoft DataGrid控件显示的视图非常相似。

C1FlexGrid让您更进一步,以显示列的聚合值。例如,为了显示“Price”,“Cost”,“Weight”以及“Volume”列的合计,请按照如下方式修改XAML:

XAML
拷贝代码
<fg:C1FlexGrid x:Name="_flex" AutoGenerateColumns="False"
  AreRowGroupHeadersFrozen="False">
  <fg:C1FlexGrid.Columns>
    <fg:Column Header="Line" Binding="{Binding Line}" />
    <fg:Column Header="Color" Binding="{Binding Color}" />
    <fg:Column Header="Name" Binding="{Binding Name}" />
    <fg:Column Header="Price" Binding="{Binding Price}"
      Format="n2" HorizontalAlignment="Right" Width="*"
      GroupAggregate="Sum"/>
    <fg:Column Header="Cost" Binding="{Binding Cost}"
      Format="n2" HorizontalAlignment="Right" Width="*"
      GroupAggregate="Sum"/>
    <fg:Column Header="Weight" Binding="{Binding Weight}"
      Format="n2" HorizontalAlignment="Right" Width="*"
      GroupAggregate="Sum"/>
    <fg:Column Header="Volume" Binding="{Binding Volume}"
      Format="n2" HorizontalAlignment="Right" Width="*"
      GroupAggregate="Sum"/>
  </fg:C1FlexGrid.Columns>
</fg:C1FlexGrid>

该段XAML代码包含两点变化:

做了这个改变后,Grid将看起来像这样:

请注意,分组Header是如何显示分组的聚合值的。当数据发生变化时,聚合值将自动地重新计算。

 

 


产品网站:http://www.gcpowertools.com.cn  |  咨询热线:4006576008   |   ©2015 西安葡萄城