Flex 3 AdvancedDataGrid的使用(五)

转自 http://hi.baidu.com/lz0830/blog/item/5519c11ffe6bdfc1a6866966.html

我们继续来讲AdvancedDataGrid的使用。

创建汇总行

您可以使用GroupingField类的summaries属性来创建分组数据的汇总数据,然后您可以将汇总数据与原来数据显示同一行中,也可以将其显示在单独一行中。

以下示例中,AdvancedDataGrid控件显示了两个汇总字段,Min Actual和Max Actual:

顶部行的Min Actual和Max Actual字段对应分组中所有行的汇总,而每个Territory的Min Actual和Max Actual字段对应该Territory子组中所有行的汇总。

以下是实际代码:

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
 <mx:Script>
  <![CDATA[
   import mx.collections.ArrayCollection;
   include "SimpleFlatData.as"
  ]]>
 </mx:Script>
 <mx:AdvancedDataGrid id="myADG"
  width="100%" height="100%"
  initialize="gc.refresh();">
  <mx:dataProvider>
   <mx:GroupingCollection id="gc" source="{dpFlat}">
    <mx:Grouping>
     <mx:GroupingField name="Region">
      <mx:summaries>
       <mx:SummaryRow summaryPlacement="group">
        <mx:fields>
         <mx:SummaryField dataField="Actual"
          label="Min Actual" operation="MIN"/>
         <mx:SummaryField dataField="Actual"
          label="Max Actual" operation="MAX"/>
        </mx:fields>
       </mx:SummaryRow>
      </mx:summaries>
     </mx:GroupingField>
     <mx:GroupingField name="Territory">
      <mx:summaries>
       <mx:SummaryRow summaryPlacement="group">
        <mx:fields>
         <mx:SummaryField dataField="Actual"
          label="Min Actual" operation="MIN"/>
         <mx:SummaryField dataField="Actual"
          label="Max Actual" operation="MAX"/>
        </mx:fields>
       </mx:SummaryRow>
      </mx:summaries>
     </mx:GroupingField>
    </mx:Grouping>
   </mx:GroupingCollection>
  </mx:dataProvider>
  <mx:columns>
   <mx:AdvancedDataGridColumn dataField="Region"/>
   <mx:AdvancedDataGridColumn dataField="Territory_Rep"
    headerText="Territory Rep"/>
   <mx:AdvancedDataGridColumn dataField="Actual"/>
   <mx:AdvancedDataGridColumn dataField="Estimate"/>
   <mx:AdvancedDataGridColumn dataField="Min Actual"/>
   <mx:AdvancedDataGridColumn dataField="Max Actual"/>
  </mx:columns>
 </mx:AdvancedDataGrid>
</mx:Application>

运行示例

注意在该示例中,我们将GroupingField.summaries属性指定为SummaryRow实例。SummaryRow包含数据汇总的所有信息。例如,我们使用SummaryRow的summaryPlacement属性来将汇总数据添加到分组数据中。可选的,您也可以增加一个新行来存放汇总数据。更多信息请查看“指定汇总数据存放位置“。

每个SummaryRow实例指定一个或多个用来创建数据汇总的SummayField实例。例如,您可以使用SummayField的dataField属性来指定对Actual数据字段进行汇总,label属性用于指明存放汇总数据的数据字段的名称,而operation属性用于指定如何对数值字段几行汇总,您可以使用以下任一值:SUM、MIN、 MAX、AVG或COUNT。

加上了新的合计数据字段,在组件内部,代表分组数据的GroupingCollection其内容如下所示:

[{GroupLabel:"Southwest", Max Actual:55498, Min Actual:29134, children:[
 {GroupLabel:"Arizona", Max Actual:38865, Min Actual:29885, children:[
  {Region:"Southwest", Territory:"Arizona",
   Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},
  {Region:"Southwest", Territory:"Arizona",
   Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000}]}
 {GroupLabel:"Central California", Max Actual:29134, Min Actual:29134,children:[
  {Region:"Southwest", Territory:"Central California",
   Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000}]}
 {GroupLabel:"Nevada", Max Actual:52888, Min Actual:52888, children:[
  {Region:"Southwest", Territory:"Nevada",
   Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000}]}
 {GroupLabel:"Northern California", Max Actual:55498, Min Actual:38805,children:[
  {Region:"Southwest", Territory:"Northern California",
   Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},
  {Region:"Southwest", Territory:"Northern California",
   Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000}]}
 {GroupLabel:"Southern California", Max Actual:44985, Min Actual:44913,children:[
  {Region:"Southwest", Territory:"Southern California",
   Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},
  {Region:"Southwest", Territory:"Southern California",
   Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}]}
]}]

使用GroupingField和SummaryRow类的缺省属性

GroupingField.summaries属性是GroupingField的缺省属性,而SummaryRow.fields属性是 SummaryRow类的缺省属性;因此,您可以在您的代码中省略这些属性而重写前面的示例,如下所示:

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
 <mx:Script>
  <![CDATA[
   import mx.collections.ArrayCollection;
   include "SimpleFlatData.as"
  ]]>
 </mx:Script>
 <mx:AdvancedDataGrid id="myADG"
  width="100%" height="100%"
  initialize="gc.refresh();">
  <mx:dataProvider>
   <mx:GroupingCollection id="gc" source="{dpFlat}">
    <mx:Grouping>
     <mx:GroupingField name="Region">
      <mx:SummaryRow summaryPlacement="group">
       <mx:SummaryField operation="MIN"
        dataField="Actual" label="Min Actual"/>
       <mx:SummaryField operation="MAX"
        dataField="Actual" label="Max Actual"/>
       </mx:SummaryRow>
      </mx:GroupingField>
      <mx:GroupingField name="Territory">
       <mx:SummaryRow summaryPlacement="group">
        <mx:SummaryField operation="MIN"
         dataField="Actual" label="Min Actual"/>
        <mx:SummaryField operation="MAX"
         dataField="Actual" label="Max Actual"/>
       </mx:SummaryRow>
      </mx:GroupingField>
    </mx:Grouping>
   </mx:GroupingCollection>
  </mx:dataProvider>
  <mx:columns>
   <mx:AdvancedDataGridColumn dataField="Region"/>
   <mx:AdvancedDataGridColumn dataField="Territory_Rep"
    headerText="Territory Rep"/>
   <mx:AdvancedDataGridColumn dataField="Actual"/>
   <mx:AdvancedDataGridColumn dataField="Estimate"/>
   <mx:AdvancedDataGridColumn dataField="Min Actual"/>
   <mx:AdvancedDataGridColumn dataField="Max Actual"/>
  </mx:columns>
 </mx:AdvancedDataGrid>
</mx:Application>

指定汇总数据存放位置

SummaryRow类包含一个summaryPlacement属性用于决定在AdvancedDataGrid控件的那里显示汇总数据。summaryPlacement属性允许的值如下:

  • first 在分组的第一行创建汇总行。
  • last 在分组的最后一行创建汇总行。
  • group 将合计数据添加到对应的分组中。

在前面的“创建汇总中”小节中的示例已经演示了通过指定summaryPlacement属性值为group来将汇总数据添加到分组中。以下示例,使用相同的分组数据但是其summaryPlacement属性设置的是last:


您可以指定多个值给summaryPlacement属性,通过空格分隔,例如,指定“last group”这样的值表示同时在分组级别和分组的末行显示汇总数据。

这样,加上了新的合计数据字段,在组件内部,代表分组数据的GroupingCollection其内容如下所示:

[{GroupLabel:"Southwest", children:[
 {GroupLabel:"Arizona", children:[
  {Region:"Southwest", Territory:"Arizona",
   Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},
  {Region:"Southwest", Territory:"Arizona",
   Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000},
  {Max Actual:38865, Min Actual:29885}]}
 {GroupLabel:"Central California", children:[
  {Region:"Southwest", Territory:"Central California",
   Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000},
  {Max Actual:29134, Min Actual:29134}]}
 {GroupLabel:"Nevada", children:[
  {Region:"Southwest", Territory:"Nevada",
   Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000},
  {Max Actual:52888, Min Actual:52888}]}
 {GroupLabel:"Northern California", children:[
  {Region:"Southwest", Territory:"Northern California",
   Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},
  {Region:"Southwest", Territory:"Northern California",
   Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000},
  {Max Actual:55498, Min Actual:38805}]}
 {GroupLabel:"Southern California", children:[
  {Region:"Southwest", Territory:"Southern California",
   Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},
  {Region:"Southwest", Territory:"Southern California",
   Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000},
  {Max Actual:44985, Min Actual:44913}]}
 {Max Actual:55498, Min Actual:29134}
]}]

注意,在整个组中添加了一个新行用于存放汇总数据,而且每个子组都添加了一个新行用于存放子组的汇总数据。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值