<mx:SummaryField2 Properties dataField="No default" label="No default" summaryOperation="SUM" />]]>
注意:在先前版本的 Flex 中,您使用了 SummaryField 类来创建摘要数据。SummaryField2 类是 Flex 4 中的新类,提供比 SummaryField 更好的性能。
使用
以下示例基于 AdvancedDataGrid 控件的数据提供程序的两个字段创建摘要行:
<mx:AdvancedDataGrid id="myADG" 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:SummaryField2 dataField="Actual" label="Min Actual" summaryOperation="MIN"/> <mx:SummaryField2 dataField="Actual" label="Max Actual" summaryOperation="MAX"/> </mx:fields> </mx:SummaryRow> </mx:summaries> </mx:GroupingField> <mx:GroupingField name="Territory"> <mx:summaries> <mx:SummaryRow summaryPlacement="group"> <mx:fields> <mx:SummaryField2 dataField="Actual" label="Min Actual" summaryOperation="MIN"/> <mx:SummaryField2 dataField="Actual" label="Max Actual" summaryOperation="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>
例如,如果将
{Summary:1000}
此属性不影响没有根节点的源,如 List 和 Array 对象。
使用
以下示例基于 AdvancedDataGrid 控件的数据提供程序的两个字段创建摘要行:
<mx:AdvancedDataGrid id="myADG" 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>
此类已被弃用并被新类
例如,如果将
{Summary:1000}
可将此属性与
该函数签名应如下所示:
function mySummaryFunction(iterator:IViewCursor, dataField:String, operation:String):Object
<mx:GroupingCollection2 Properties grouping="No default" source="No default" summaries="No default" />]]>
注意:在先前版本的 Flex 中,您将 GroupingCollection 类与 AdvancedDataGrid 控件一起使用。GroupingCollection2 类是 Flex 4 中的新类,提供比 GroupingCollection 更好的性能。
要使用分组数据填充 AdvancedDataGrid 控件,可以在平面数据中创建 GroupingCollection2 类的一个实例,然后将该 GroupingCollection2 实例传递给 AdvancedDataGrid 控件的数据提供程序。要指定平面数据的分组字段,可将一个 Grouping 实例传递给
以下示例使用 GroupingCollection2 类定义两个分组字段:Region 和 Territory。
<mx:AdvancedDataGrid id="myADG" <mx:dataProvider> <mx:GroupingCollection2 id="gc" source="{dpFlat}"> <mx:grouping> <mx:Grouping> <mx:GroupingField name="Region"/> <mx:GroupingField name="Territory"/> </mx:Grouping> </mx:grouping> </mx:GroupingCollection2> </mx:dataProvider> <mx:columns> <mx:AdvancedDataGridColumn dataField="Region"/> <mx:AdvancedDataGridColumn dataField="Territory"/> <mx:AdvancedDataGridColumn dataField="Territory_Rep"/> <mx:AdvancedDataGridColumn dataField="Actual"/> <mx:AdvancedDataGridColumn dataField="Estimate"/> </mx:columns> </mx:AdvancedDataGrid>
可以同步或异步应用
同步调用
在异步刷新中,会单独更新所有组和摘要。
单独更新组和摘要(而不是一次全部更新)的开销使异步刷新比同步刷新花费的时间更长。但是,对于大型数据集,您的应用程序会在刷新过程中继续操作。
<mx:AdvancedDataGrid id="myADG" width="100%" height="100%" initialize="gc.refresh();"> <mx:dataProvider> <mx:GroupingCollection2 id="gc" source="{dpFlat}"> <mx:summaries> <mx:SummaryRow summaryPlacement="last"> <mx:fields> <mx:SummaryField2 dataField="Actual" label="Min Actual" summaryOperation="MIN"/> <mx:SummaryField2 dataField="Actual" label="Max Actual" summaryOperation="MAX"/> </mx:fields> </mx:SummaryRow> </mx:summaries> <mx:Grouping> <mx:GroupingField name="Region"/> <mx:GroupingField name="Territory"/> </mx:Grouping> </mx:GroupingCollection2> </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:GroupingField Properties caseInsensitive="false|true" compareFunction="No default" descending="false|true" groupingFunction="No default" groupingObjectFunction="No default" name="null" numeric="false|true" summaries="No default" />]]>
要使用分组数据填充 AdvancedDataGrid 控件,可以在平面数据中创建 GroupingCollection 类的一个实例,然后将该 GroupingCollection 实例传递给 AdvancedDataGrid 控件的数据提供程序。要指定平面数据的分组字段,可将一个 Grouping 实例传递给
以下示例使用 Grouping 类定义两个分组字段:Region 和 Territory。
<mx:AdvancedDataGrid id="myADG" <mx:dataProvider> <mx:GroupingCollection id="gc" source="{dpFlat}"> <mx:grouping> <mx:Grouping> <mx:GroupingField name="Region"/> <mx:GroupingField name="Territory"/> </mx:Grouping> </mx:grouping> </mx:GroupingCollection> </mx:dataProvider> <mx:columns> <mx:AdvancedDataGridColumn dataField="Region"/> <mx:AdvancedDataGridColumn dataField="Territory"/> <mx:AdvancedDataGridColumn dataField="Territory_Rep"/> <mx:AdvancedDataGridColumn dataField="Actual"/> <mx:AdvancedDataGridColumn dataField="Estimate"/> </mx:columns> </mx:AdvancedDataGrid>
回调函数可能会将数字格式的月转换为字符串格式的月,或基于某些条件而不是字段的实际值将多个项目分为一个组。
对于 GroupField,方法签名具有以下格式:
groupingFunction(item:Object, field:GroupField):String
其中
private function groupFunc(item:Object, field:GroupingField):String { return item[field.name].toString().substr(0, 1); }
您可以提供
方法签名为:
myGroupObjectFunction(label:String):Object
其中
private function groupObjFunction(label:String):Object { var obj:Object = {}; obj.name = "Bob"; return obj; }
<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: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>
该比较函数必须具有以下签名:
function myCompare(a:Object, b:Object):int
此函数必须返回以下值:
默认值为具有以下特征的内部比较函数:可以通过区分大小写或不区分大小写的字符串比较按升序或降序执行字符串、数字或日期比较。仅在需要自定义比较算法时指定您自己的函数。这种情况通常仅当在显示中使用计算的字段时出现。
<mx:Grouping Properties compareFunction="No default" fields="null" groupingObjectFunction="No default" label="GroupLabel" />]]>
要使用分组数据填充 AdvancedDataGrid 控件,可以在平面数据中创建 GroupingCollection 类的一个实例,然后将该 GroupingCollection 实例传递给 AdvancedDataGrid 控件的数据提供程序。要指定平面数据的分组字段,可将一个 Grouping 实例传递给
以下示例使用 Grouping 类定义两个分组字段:Region 和 Territory。
<mx:AdvancedDataGrid id="myADG" <mx:dataProvider> <mx:GroupingCollection id="gc" source="{dpFlat}"> <mx:grouping> <mx:Grouping> <mx:GroupingField name="Region"/> <mx:GroupingField name="Territory"/> </mx:Grouping> </mx:grouping> </mx:GroupingCollection> </mx:dataProvider> <mx:columns> <mx:AdvancedDataGridColumn dataField="Region"/> <mx:AdvancedDataGridColumn dataField="Territory"/> <mx:AdvancedDataGridColumn dataField="Territory_Rep"/> <mx:AdvancedDataGridColumn dataField="Actual"/> <mx:AdvancedDataGridColumn dataField="Estimate"/> </mx:columns> </mx:AdvancedDataGrid>
您可以提供
方法签名为:
myGroupObjectFunction(label:String):Object
其中
private function groupObjFunction(label:String):Object { var obj:Object = {}; obj.name = "Bob"; return obj; }
该比较函数必须具有以下签名:
function [name](a:Object, b:Object, fields:Array=null):int
此函数必须返回以下值:
要返回内部比较函数,请将此值设置为
function myCompare(a:Object, b:Object, fields:Array=null):int { var result:int = 0; var i:int = 0; var propList:Array = fields ? fields : internalPropList; var len:int = propList.length; var propName:String; while (result == 0 && (i < len)) { propName = propList[i]; result = compareValues(a[propName], b[propName]); i++; } return result; } function compareValues(a:Object, b:Object):int { if (a == null && b == null) return 0; if (a == null) return 1; if (b == null) return -1; if (a < b) return -1; if (a > b) return 1; return 0; }
默认值为具有以下特征的内部比较函数:可以通过区分大小写或不区分大小写的字符串比较按升序或降序执行字符串、数字或日期比较。仅在需要自定义比较算法时指定您自己的函数。这种情况通常仅当在显示中使用计算的字段时出现。
或者,您可以使用 SortField 类的
<mx:SummaryRow Properties fields="No default" summaryObjectFunction="No default" summaryPlacement="last" />]]>
GroupingField 或 GroupingCollection 类的
以下示例基于 AdvancedDataGrid 控件的数据提供程序的两个字段创建摘要行:
<mx:AdvancedDataGrid id="myADG" 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>
可将此属性与
GroupingCollection 类可将名为
该回调函数必须具有以下签名:
function mySumObjFunc():SummaryObject {}
可以指定多个值,用空格分隔。例如,
节点无需包含该方法的子节点即可返回
<mx:GroupingCollection Properties grouping="No default" source="No default" summaries="No default" />
This Class has been deprecated and replaced by a new Class
GroupingCollection2
which provide faster,
improved performance and a new summary calculation mechanism.
Class SummaryField
has also been deprecated and
replaced by a new Class SummaryField2
.
Properties operation
and summaryFunction
are
not present in the Class SummaryField2
.
A new property summaryOperation
is introduced in
SummaryField2
.
要使用分组数据填充 AdvancedDataGrid 控件,可以在平面数据中创建 GroupingCollection 类的一个实例,然后将该 GroupingCollection 实例传递给 AdvancedDataGrid 控件的数据提供程序。要指定平面数据的分组字段,可将一个 Grouping 实例传递给
以下示例使用 GroupingCollection 类定义两个分组字段:Region 和 Territory。
<mx:AdvancedDataGrid id="myADG" <mx:dataProvider> <mx:GroupingCollection id="gc" source="{dpFlat}"> <mx:grouping> <mx:Grouping> <mx:GroupingField name="Region"/> <mx:GroupingField name="Territory"/> </mx:Grouping> </mx:grouping> </mx:GroupingCollection> </mx:dataProvider> <mx:columns> <mx:AdvancedDataGridColumn dataField="Region"/> <mx:AdvancedDataGridColumn dataField="Territory"/> <mx:AdvancedDataGridColumn dataField="Territory_Rep"/> <mx:AdvancedDataGridColumn dataField="Actual"/> <mx:AdvancedDataGridColumn dataField="Estimate"/> </mx:columns> </mx:AdvancedDataGrid>
通过调用
如果同步调用
<mx:AdvancedDataGrid id="myADG" width="100%" height="100%" initialize="gc.refresh();"> <mx:dataProvider> <mx:GroupingCollection id="gc" source="{dpFlat}"> <mx:summaries> <mx:SummaryRow summaryPlacement="last"> <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:Grouping> <mx:GroupingField name="Region"/> <mx:GroupingField name="Territory"/> </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>
在两个组中实现此接口的方法。第一组包含
第二组包含
可以同步或异步应用
同步调用
在异步刷新中,会单独更新所有组和摘要。
单独更新组和摘要(而不是一次全部更新)的开销使异步刷新比同步刷新花费的时间更长。但是,对于大型数据集,您的应用程序会在刷新过程中继续操作。
注意:IGroupingCollection2 的 Flex 实现将先检索远程位置的所有项目,然后再执行分组。
<mx:HierarchicalCollectionView Properties showRoot="true|false" source="No default" />]]>
此属性不影响没有根节点的源,如 List 和 Array 对象。
通过调用
如果同步调用
注意:IGroupingCollection 的 Flex 实现将先检索远程位置的所有项目,然后再执行分组。