基于ArrayCollection的flex tree

原创 2013年12月05日 22:57:15

基于ArrayCollection 灵活加载后台代码方便快捷的显示tree,内容包括界面和TreeDataFormat类


界面

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
               creationComplete="init(event)">
    <fx:Declarations>
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import flashx.textLayout.events.DamageEvent;
            
            import mx.collections.ArrayCollection;
            import mx.events.FlexEvent;
            
            private var data:ArrayCollection=new ArrayCollection([
                {id:'010',name:'角色树',parentid:'0'},
                {id:'020',name:"用户树",parentid:'0'},
                {id:'010010',name:"管理员",parentid:'010'},
                {id:'010010010',name:"系统管理员",parentid:'010010'},
                {id:'010010020',name:"用户管理员",parentid:'010010'},
                {id:'020010',name:"老婆",parentid:'020'},
                {id:'020020',name:'情人',parentid:'020'}
            ]);
            
            private function init(event:FlexEvent):void{
                var root:Object=new Object();
                root.id="0";
                root.name="我的树";
                var tdf:TreeDataFormat=new TreeDataFormat(data);
                tree.dataProvider=tdf.getTreeData(root);
                
            }
            
        ]]>
    </fx:Script>
    <mx:Tree id="tree" x="211" y="106" width="200" labelField="name" height="400"></mx:Tree>
</s:Application>


TreeDataFormat类

package
{
    import mx.collections.ArrayCollection;

    public class TreeDataFormat
    {
        private var data:ArrayCollection;
        
        public function TreeDataFormat(data:ArrayCollection)
        {
            this.data=data;
        }
        
        public function getTreeData(obj:Object):Object{
            for each(var d:Object in data){
                if(d.parentid==obj.id){
                    getTreeData(d);
                    if(obj.children==null){
                        obj.children=new ArrayCollection();
                    }
                    obj.children.addItem(d);
                }
            }
            return obj;
        }
    }
}

实现效果


flex4 中用ArrayCollection来当作tree的数据源示例

  • u010395804
  • u010395804
  • 2014年06月19日 13:55
  • 979

Flex ArrayCollection类用法详解

本文和大家重点学习一下Flex ArrayCollection的概念,经常被使用的两个集合类型是ArrayCollection类XMLListCollection类。ArrayCollection是A...
  • xiaoniba1024
  • xiaoniba1024
  • 2011年06月30日 09:53
  • 20885

Flex ArrayCollection 中的排序、过滤

1.ArrayCollection 排序 private function sortAc():ArrayCollection{                    var sort:Sort...
  • s464036801
  • s464036801
  • 2012年12月13日 11:21
  • 457

关于Flex里面的对象或者ArrayCollection等数组的深度复制问题

13.11 深度拷贝一个ArrayCollection集合 13.11.1 问题 需要拷贝一个索引数组里的所有项或者从一个对象创建一个新对象。 13.11.2解决 使用mx.utils.Obj...
  • vincent50411
  • vincent50411
  • 2012年10月23日 15:32
  • 875

Flex中对ArrayCollection进行排序

利用ArrayCollection的sort属性 xml version="1.0" encoding="utf-8"?> xmlns:mx="http://www.adobe.com/200...
  • lvdou2518
  • lvdou2518
  • 2014年02月28日 14:50
  • 638

Flex 使用ArrayCollection的FilterFunction进行数据过滤

http://www.cnblogs.com/mobile/archive/2006/09/18/507700.aspx(转自)xml version="1.0" encoding="utf-8"?>...
  • faith_zerg
  • faith_zerg
  • 2007年10月22日 12:05
  • 3312

Flex循环删除ArrayCollection中符合条件的项

先看看下面的代码: Js代码   "1.0" encoding="utf-8"?>   "http://www.adobe.com/2006/mxml"  initializ...
  • wq122289014
  • wq122289014
  • 2016年10月20日 15:36
  • 595

Flex AdvancedDataGrid添加汇总行处理

表格行汇总是一个很普遍的业务需求,比如编辑单元格数据时,用户往往想知道,该列的总和是多少?这就需要给表格添加汇总行。Flex本身自带的Datagrid或者AdvancedDataGrid都没有此功能,...
  • chuangxin
  • chuangxin
  • 2010年10月13日 21:52
  • 4866

谈谈Flex中ArrayCollection的复制(克隆)

谈谈Flex中ArrayCollection的复制(克隆)        在Flex的开发过程中,常常会遇到复制ArrayCollection的情况。以前只是从网上找个方法拿来就用,也没有具体的搞清楚...
  • accp_fangjian
  • accp_fangjian
  • 2008年05月09日 16:32
  • 8198

Flex之旅:第一部分:flex必备基础知识积累(4)---ArrayCollection, Array赋值写法

[Bindable] private var items:ArrayCollection=new ArrayCollection([ {label:'Live', value1:'N',...
  • miqi770
  • miqi770
  • 2014年01月28日 10:00
  • 2541
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于ArrayCollection的flex tree
举报原因:
原因补充:

(最多只允许输入30个字)