Flex用GroupingCollection2建立tree的Hierarchy浅析

最近一直在actionscript下写程序

碰到了要写tree的情况,后台阿三给的是flat XML数据,数据收到转换后我用arraycollection去存
要自己在arraycollection上建立Hirarchy,对tree又不是那么熟,查查各种资料。
发现GroupingCollection2是一个不错的东西,用了之后感觉不错,写下来
这个是来自adobe的例子[url=http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7bec.html]Displaying grouped data[/url],我参考的是actionscript版。

但是我遇到的问题是label显示的问题,当我group了2个以上的field之后
然后使用labelField="GroupLabel",结果是在最后一个结点也就是leaf的时候会出现[object someVo]问题。
即不能正常的显示出来,下面是主要部分code:


import mx.collections.GroupingField;
import mx.collections.Grouping;
import mx.collections.GroupingCollection2;
import mx.collections.ArrayCollection;

[Bindable]
public var myGColl:GroupingCollection2 = new GroupingCollection2();

private var myGrp:Grouping = new Grouping();

private function initDG():void {

//dpFlat是arraycollection数据
myGColl.source = dpFlat;

myGrp.fields = [new GroupingField("Initiative"), new GroupingField("Progrom")];

//使用GroupLabel显示label,很方便,
//但这样会出现末端结点的[object someVo]问题
myGrp.label = "GroupLabel";

myGColl.grouping = myGrp;

myADG.dataProvider = myGColl;

myGColl.refresh();

myTree.dataProvider = gc.getRoot();
}


乱试了很多别的都没办法解决,只能用labelfunction去弄了,为此来问了另一个阿三([url=http://manikmagar.wordpress.com/2011/08/21/flex-tree-and-groupingcollection/]他的blog[/url]), 惭愧, 下面是labelfunction的code:


private function myLabelFunction(item:Object):String{
if(item.hasOwnProperty('GroupLabel')){ // 这个判定重要
return item.GroupLabel;
} else if (item is TestItem){
return item.year;
} else {
return item.toString();
}


好了,搞定,本来这是给AdvanceDataGrid里tree用的,我这用来直接tree
不难,就是一种用法,当作第一篇。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值