首页 > 设计 > WEB开发 > 正文

6.11.使用GroupingCollection生成数据汇总

2023-08-02 23:09:37
字体:
来源:转载
供稿:网友
6.11.1. 问题
我想为表格数据生成汇总值
6.11.2. 解决办法
使用GroupingCollection 生成汇总值,配置AdvancedDataGrid 以便它看起来具有数据汇总功能。
6.11.3. 讨论
你可以使用GroupingCollection 生成数据汇总,配置AdvancedDataGrid 显示汇总数据。

当生成数据汇总时,你不想排序和分组现有的dataField,因为你只是简单的显示数据而已,下面的示例代码生成一个虚拟群,指定fieldNameNotPresent 作为群字段的dataField 值。现在你可以使用SummaryRow 和SummaryField 对象设置汇总了。

当汇总数据准备好后, 你还有第二个任务。当ADG.dataProvider 填充数据到GroupingCollection 后, data provider 将会试图把集合作为实现IHierarchicalData 的GroupingCollection 显示到树视图中。在内部, GroupingCollection 会被转换为HierarchicalCollectionView ,ADG.dataProvider 返回HierarchicalCollectionView 实例。(这和array 的dataProvider 类似, 它在内部将被转换为ArrayCollection) 使用
HierarchicalCollectionView 的showRoot 属性你可以控制根节点的显示。通过将它设置为False,可以防止虚拟群组被显示。

AdvancedDataGrid 默认使用的是AdvancedDataGridGroupItemRenderer 来显示层级数据。这个itemRenderer 显示目录和父节点的图标。这里用AdvancedDataGrid.groupItemRenderer 代替AdvancedDataGridItemRenderer 可隐藏群组图标,下面是完整的例子:
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolutewidth="460height="428" >

<mx:Script>
<![CDATA[
import
mx.controls.advancedDataGridClasses.AdvancedDataGridItemRenderer;
import mx.collections.IGroupingCollection;
import
mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
import mx.collections.GroupingField;
import mx.collections.Grouping;
import mx.collections.ArrayCollection;
import mx.collections.GroupingCollection;
var flatData:ArrayCollection = new ArrayCollection(
[
{ Region:"Southwest", Territory:"Arizona",
Territory_Rep:"Barbara Jennings", Estimate:40000 ,
Actual:38865 },
{ Region:"Southwest", Territory:"Arizona",
Territory_Rep:"Dana Binn", Estimate:30000 ,
Actual:29885 },
{ Region:"Southwest", Territory:"Central California",
Territory_Rep:"Joe Schmoe" , Estimate:30000 ,
Actual:29134 },
{ Region:"Southwest", Territory:"Northern California" ,
Territory_Rep:"Lauren Ipsum" , Estimate:40000 ,
Actual:38805 },
{ Region:"Southwest", Territory:"Northern California" ,
Territory_Rep:"T.R. Smith" , Estimate:40000 ,
Actual:55498 },
{ Region:"Southwest", Territory:"Southern California" ,
Territory_Rep:"Jane Grove" , Estimate:45000 ,
Actual:44913 },
{ Region:"Southwest", Territory:"Southern California" ,
Territory_Rep:"Alice Treu" , Estimate:45000 ,
Actual:44985 },
{ Region:"Southwest", Territory:"Nevada" ,
Territory_Rep:"Bethany Pittman", Estimate:45000 ,
Actual:52888 }
]);
//这里AdvancedDataGrid的styleFunction属性是用来格式化显示具有summary属性的itemRenderers:
private function formatSummary(data:Object,
col:AdvancedDataGridColumn):Object
{
if (data.hasOwnProperty("summary"))
{
return { color:0xFF0000, fontWeight:"bold",
fontSize:12 };
}
return {};
}
private function flatSummaryObject():Object
{
return { Territory_Rep:"Total", summary:true };
}

]]>
</mx:Script>
<mx:AdvancedDataGrid id="adg"
creationComplete="groupedData.refresh();
adg.dataProvider.showRoot=false
"
groupItemRenderer="mx.controls.advancedDataGridClasses.
AdvancedDataGridItemRenderer
"
x="30y="30width="400height="377"
styleFunction="formatSummary">

<mx:dataProvider>
<mx:GroupingCollection id="groupedDatasource="{flatData}"
>

<mx:Grouping>
<!-- use some dummy field and set showRoot=false for
the ADG dataProvider 
-->

<mx:GroupingField name="fieldNameNotPresent" >
<mx:summaries>
<!-- use the summaryObjectFunction to return a
custom object which can then be used in the format function to
detect a summary row 
-->

<mx:SummaryRow summaryPlacement="last"
summaryObjectFunction="flatSummaryObject">

<mx:fields>
<mx:SummaryField dataField="Estimate" />
<mx:SummaryField dataField="Actual" />
</mx:fields>
</mx:SummaryRow>
</mx:summaries>
</mx:GroupingField>
</mx:Grouping>
</mx:GroupingCollection>
</mx:dataProvider>
<mx:groupedColumns>
<mx:AdvancedDataGridColumn headerText="Territory Rep"
dataField="Territory_Rep" />

<mx:AdvancedDataGridColumnGroup headerText="Sales Figures"
textAlign="center">

<mx:AdvancedDataGridColumn headerText="Estimate"
textAlign="centerdataField="Estimate"
width="100" />

<mx:AdvancedDataGridColumn headerText="Actual"
textAlign="centerdataField="Actual"
width="100" />

</mx:AdvancedDataGridColumnGroup>
</mx:groupedColumns>
</mx:AdvancedDataGrid>
</mx:Application>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表