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

13.4.创建GroupingCollection

2023-07-22 12:39:14
字体:
来源:转载
供稿:网友
13.4.1. 问题
我想基于集合中数据项的某个属性创建唯一的分组数据
13.4.2. 解决办法
传递一个Array 参数给GroupingCollection 构造器或设置GroupingCollection 对象的source属性。
13.4.3. 讨论
任何GroupingCollection 都有一个Grouping 对象实例,其拥有对应的GroupingField,定义了将用来生成分组数据的数据对象属性。你可以根据对象属性使用GroupingCollection 进行数据分组。要对数据对象的state 和region 属性进行分组,具体如下:
+展开
-ActionScript
var groupingColl:GroupingCollection = new GroupingCollection();
groupingColl.source = [{city:"Columbus", state:"Ohio", region:"East"},
{city:"Cleveland", state:"Ohio", region:"East"}, {city:"Sacramento",
state:"California", region:"West"}, {city:"Atlanta", state:"Georgia",
region:"South"}];

对state 属性进行分组,首先创建具有相同state 的所有对象分组,创建Grouping 实例,传递GroupingField 对象数组给Grouping 实例的fields:
+展开
-ActionScript
var groupingInst:Grouping = new Grouping();
groupingInst.fields = [new GroupingField("state")];
groupingColl.grouping = groupingInst;
groupingColl.refresh(false);

Grouping 实例初始化后,设置GroupingCollection 的grouping 属性为groupingInst,然后刷新,集合将根据state 属性值对集合所有数据进行分组:
+展开
-XML
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400height="300creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.collections.Grouping;
import mx.collections.GroupingField;
import mx.collections.GroupingCollection;
[Bindable]
private var groupingColl:GroupingCollection;
private function init():void {
groupingColl = new GroupingCollection();
groupingColl.source = [
{city:"Columbus",state:"Ohio",region:"East"},
{city:"Cleveland", state:"Ohio", region:"East"},
{city:"Sacramento",state:"California",region:"West"},
{city:"Atlanta",state:"Georgia", region:"South"}];
var groupingInst:Grouping = new Grouping();
groupingInst.fields = [new GroupingField("state")];
groupingColl.grouping = groupingInst;
groupingColl.refresh(false);
}
//设置好GroupingCollection的grouping属性后,设置另外的分组将会覆盖当前分组:
private function createRegionGrouping():void {
var groupingInst:Grouping = new Grouping();
groupingInst.fields =
[new GroupingField("region")];
groupingColl.grouping = groupingInst;
groupingColl.refresh(false);
}

]]>
</mx:Script>
<mx:AdvancedDataGrid dataProvider="{groupingColl}">
<mx:columns>
<mx:AdvancedDataGridColumn dataField="city"/>
</mx:columns>
</mx:AdvancedDataGrid>
<mx:Button click="createRegionGrouping()"/>
</mx:VBox>

要想传递多个分组,只要传递多个GroupingField 对象即可。
+展开
-ActionScript
groupingInst.fields = [new GroupingField("region"), new GroupingField("state")];

这将会先对region 分组字段分组,在对state 字段分组。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表