Flex中Tree组件的数据源举例来说(xml,array,object)
Flex中Tree组件的数据源举例(xml,array,object)
<?xml version="1.0" encoding="utf-8"?> <!-- Tree control example. --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ [Bindable] public var selectedNode:XML; [Bindable] public var selectedNodeArr:Object; // Event handler for the Tree control change event. public function treeChanged(event:Event):void { selectedNode=Tree(event.target).selectedItem as XML; selectedNodeArr=Tree(event.target).selectedItem as Object; } ]]> </mx:Script> <mx:XMLList id="treeData_xmllist"> <node label="Mail Box"> <node label="Inbox"> <node label="Marketing"/> <node label="Product Management"/> <node label="Personal"/> </node> <node label="Outbox"> <node label="Professional"/> <node label="Personal"/> </node> <node label="Spam"/> <node label="Sent"/> </node> </mx:XMLList> <mx:XML id="treeData_xml"> <node label="Mail Box"> <node label="Inbox"> <node label="Marketing"/> <node label="Product Management"/> <node label="Personal"/> </node> <node label="Outbox"> <node label="Professional"/> <node label="Personal"/> </node> <node label="Spam"/> <node label="Sent"/> </node> </mx:XML> <!--自己理解Array只是把object又封装了一层,仅此而已。可能这样又能用array的特性, 其中的记录又可以object的特性。具体的好处,看具体的环境吧--> <mx:Array id="treeData_array"> <mx:Object label="Mail Box"> <mx:children> <mx:Object label="Inbox"> <mx:children> <mx:Object label="Marketing"/> <mx:Object label="Product Management"/> <mx:Object label="Personal"/> </mx:children> </mx:Object> <mx:Object label="Outbox"> <mx:children> <mx:Object label="Professional"/> <mx:Object label="Personal"/> </mx:children> </mx:Object> <mx:Object label="Spam"/> <mx:Object label="Sent"/> </mx:children> </mx:Object> </mx:Array> <mx:ArrayCollection id="treeData_arrayCollection"> <mx:Object label="Mail Box"> <mx:children> <mx:Object label="Inbox"> <mx:children> <mx:Object label="Marketing"/> <mx:Object label="Product Management"/> <mx:Object label="Personal"/> </mx:children> </mx:Object> <mx:Object label="Outbox"> <mx:children> <mx:Object label="Professional"/> <mx:Object label="Personal"/> </mx:children> </mx:Object> <mx:Object label="Spam"/> <mx:Object label="Sent"/> </mx:children> </mx:Object> </mx:ArrayCollection> <mx:Object label="Mail Box" id="treeData_object"> <mx:children> <mx:Object label="Inbox"> <mx:children> <mx:Object label="Marketing"/> <mx:Object label="Product Management"/> <mx:Object label="Personal"/> </mx:children> </mx:Object> <mx:Object label="Outbox"> <mx:children> <mx:Object label="Professional"/> <mx:Object label="Personal"/> </mx:children> </mx:Object> <mx:Object label="Spam"/> <mx:Object label="Sent"/> </mx:children> </mx:Object> <mx:Panel title="Tree Control Example" height="75%" width="75%" paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10"> <mx:Label width="100%" color="blue" text="Select a node in the Tree control."/> <mx:HDividedBox width="100%" height="100%"> <!--更改dataProvider的属性值,看不同的数据源得到的结果。--> <!--发现showRoot="false"对array没作用。但是object,xml都行。似乎明白道理,又说不出来。用的时候注意好了。--> <mx:Tree id="myTree" width="50%" height="100%" labelField="label" showRoot="false" dataProvider="{treeData_object}" change="treeChanged(event)"/> <!--其实这个只是提醒大家,xml和object的处理方式的不同。要进行别的操作,完成更发杂的功能,原理是一样的^_^--> <!--如果是Array或ArrayCollection做数据源,要执行下面的操作--> <mx:TextArea height="100%" width="50%" text="Selected Item: {selectedNodeArr.label}"/> <!--如果是XML或XMLList做数据源,要执行下面的操作--> <!--<mx:TextArea height="100%" width="50%" text="Selected Item: {selectedNode.@label}"/>--> </mx:HDividedBox> </mx:Panel> </mx:Application>