题外话:
做程序员,是要思考的。无论是宏观方面,还是微小的细节。思考,设计都是程序员的必备素质吧。学着思考……
长城也是由一块一块石头垒起来的。就算是你用现代化的武器,它还是需要石头的。唉,说远了,写正题了。
这是flex中文帮助里的一段话:
Tree 类使用 ITreeDataDescriptor 或 ITreeDataDescriptor2 对象分析和操作数据提供程序。默认
树数据描述符(DefaultDataDescriptor 类的一个对象)支持 XML 和 Object 类;Object 类数据提供程序必须包含children 字段中的所有子项。
之前看的时候,就没有想这个object该是什么样的形式。只想“原来这样紫啊”!回过头来看,对“想到和得到中间还有个做到”这句话,有了点别的理解。
凡是具有dataProvider的组件,都可以将Array、XML等内容作为数据源。这是《flex第一步》的作者说的一句话,我突然想到,既然都能用,那tree又要求数据要有层次,那array给tree做数据源的时候,有什么特别的吗?
看代码吧
<?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>
没什么,只是备案后查。没有什么难的东西,只是小的东西没有掌握好!!
分享到:
相关推荐
flex中经常需要xml格式的文件。通过后台asp.net的处理可以将数据库中读取的文件转化为xml格式。这是再传递给前端的flex中的tree控件作为数据源。
flex4中tree组件分层显示数据示例代码(可直接运行)
Flex Tree 刷新数据源后,重新打开指定节点的解决方案,不需要延迟等其他手段
在flex中Tree组件的使用。使用XML作为Tree组件的数据源。
Flex 组件Flex 组件Flex 组件Flex 组件Flex 组件
NULL 博文链接:https://tangdonglai.iteye.com/blog/1478277
前些日子看网上只有虚线连接的例子,无聊就给改了改
flex带复选框的tree,包含源代码,需要用到的朋友请下载
Tree——一个使用XML作为Tree组件数据源的小例子
在原来flex的Tree组件上添加复选框CheckBox
flex中tree和checkbox结合使用的插件,该压缩包包含两个文档,一个是tree和checkbox结合使用的插件,另一个是使用示例
里面收集了一些Flex的tree控件的用法和实例的源代码
flex 修改 tree的icon,根据数据源root 中不同的参数修改不同的图片。
flex 中tree渲染checkbox,支持复选多选。
Flex4自定义组件 介绍了flex中如何自定义组件以及相关应用
flex中利用tree中的子节点与自定义组件实现的在同一页面中实现导航
NULL 博文链接:https://zwnjava.iteye.com/blog/603835
flex 高级自定义组件 需要重写的方法,以及为什么要重写,何时调用等。
flex xml 生成 tree 的详细源码 。还有解说