Flex 4.0中Tree中嵌入CheckBox(实现点击获取值)
来源:互联网 发布:微信平台微网站源码 编辑:程序博客网 时间:2024/06/16 11:22
本人最近项目中利用Flex4.0实现一个Tree中嵌入Checkbox组件,经过几天的弯路,今天终于实现了小编想要的功能,分享给大家,看代码。
先看看实现的样式吧:
先看MXML中Tree的代码:
<mx:Tree id="runStateTree" dataProvider="{myXml}" selectedIndex="0" selectable="true" width="100%" click="getSelectedChild(event)" height="100%" showDataTips="true" change="treeChangeHandle(event)" itemRenderer="cn.com.common.TreeCheckBoxRenderer2" showRoot="false" styleName="Tree" labelField="@label"/>注意,此Tree中通过TreeCheckBoxRenderer2来渲染这个Tree,使其能够看到Checkbox。其次数据源是从数据库中查找出来的,格式大致如下:
<Root> <DEVICE label="XXX家2" MAC="01-20-00-00-82" IP="192.168.0.117" TYPE="CP" STAT="" REL_STAT="" P_ID="" STATUS="2" CHECKED="false" FLAG="1"/> <DEVICE label="XXX家1" MAC="01-20-00-00-82" IP="192.168.0.117" TYPE="CP" STAT="" REL_STAT="" P_ID="" STATUS="2" CHECKED="false" FLAG="1"/> <DEVICE label="XXX家1" MAC="01-20-00-00-82" IP="192.168.0.117" TYPE="CP" STAT="" REL_STAT="" P_ID="" STATUS="2" CHECKED="false" FLAG="1"> <DEVICE label="检测器名称1" MAC="E1" IP="192.168.0.1" TYPE="ED" STAT="异常" REL_STAT="" P_ID="A1" STATUS="2" CHECKED="0" FLAG="1"/> <DEVICE label="检测器名称9" MAC="E9" IP="192.168.0.1" TYPE="ED" STAT="" REL_STAT="" P_ID="A1" STATUS="2" CHECKED="0" FLAG="1"/> </DEVICE> <DEVICE label="AP名字6" MAC="A6" IP="192.168.0.8" TYPE="AP" STAT="" REL_STAT="" P_ID="C1" STATUS="2" CHECKED="0" FLAG="1"> <DEVICE label="AP名字7" MAC="A7" IP="192.168.0.8" TYPE="AP" STAT="" REL_STAT="" P_ID="A6" STATUS="2" CHECKED="0" FLAG="1"/> </DEVICE> <DEVICE label="栋家" MAC="01-20-00-00-82" IP="192.168.0.117" TYPE="CP" STAT="" REL_STAT="" P_ID="" STATUS="2" CHECKED="false" FLAG="1"/> </Root>其中,我在这个功能中用到的有 CHECKED和FLAG,通过这两个属性来判断,其他属性都是想获取的值。
好,接下来再看Tree的click方法:
/** * Tree的点击方法,判断是否选中,并获取相关值 * */private function getSelectedChild(event:MouseEvent):void{var obj2:Object;//获取点击节点的值var selectNode:XML=Tree(event.currentTarget).selectedItem as XML;//通过checkbox的selected属性,来改变数据源的checked值,如果checkbox是true,则获取值,FLAG是标识,判断是否是勾选的checkbox还是点击的树if (selectNode.@CHECKED == "true" && selectNode.@FLAG == "true"){obj2=new Object();obj2.equname=selectNode.@label;obj2.equtype=selectNode.@TYPE;obj2.macaddres=selectNode.@MAC;obj2.ipaddres=selectNode.@IP;array.addItem(obj2);//改变FLAG的值,此时checkbox已经是true了,但是如果再次点击树,就需要此属性来判断可不可以在添加值,这里改变后就不可进入此语句块中。selectNode.@FLAG="false";this.datagrid1.dataProvider=array;}//checkbox是勾选状态,但此时又点击了Tree,并没有将checkbox状态改变,所以就不进行任何操作(不改变checkbox状态,也不删除页面信息),直接返回。else if (selectNode.@CHECKED == "true" && selectNode.@FLAG == "false"){return;}//当checkbox变成false时,就需要将页面的值删除掉。else{for (var i:int=0; i < array.length; i++){//判断是否相同if (selectNode.@MAC == array[i].macaddres){//相同直接删除掉array.removeItemAt(i);selectNode.@FLAG="true";return;}}}}以上的方法就是对Tree的判断,接下来最重要的看Tree是如何被渲染的。下文中只说明了Checkbox的关键,其他省略。。。。
package cn.com.common{public class TreeCheckBoxRenderer2 extends TreeItemRenderer{public function TreeCheckBoxRenderer2(){super();} protected var checkBox:Image;/** * 构建CheckBox */override protected function createChildren():void{super.createChildren();checkBox=new CheckBox();addChild(checkBox);checkBox.addEventListener(Event.CHANGE, changeHandler);}/** * 点击checkbox时,更新dataProvider * @param event */public function changeHandler(event:Event):void{var obj2:Object; //data就是MXML中的Tree的数据源 if (data.@CHECKED != ""){ //这里就是这个功能的关键,通过checkbox的状态来给Tree的数据源重新赋值。。。。 data.@CHECKED=checkBox.selected.toString();data.@FLAG=checkBox.selected.toString();}}}}
好,以上就是小编完成的Tree中带有Checkbox选项的功能,如果想要全代码,到我的资源中去下载吧。- Flex 4.0中Tree中嵌入CheckBox(实现点击获取值)
- Flex 中点击Tree 获取点中的值
- 实现Tree控件中关于Checkbox按钮点击处理
- html table中嵌入checkbox实现全选
- Flex实现DataGrid标签中嵌入图片
- Flex中带有三种状态CheckBox的Tree的实现
- Flex中嵌入网页
- FLEX嵌入JSP中
- Flex中嵌入HTML
- Flex中嵌入网页
- flex中嵌入网页
- listView中做点击checkBox实现单选框
- android+listView中嵌入checkbox
- QTableView中VerticalHeader嵌入checkbox
- FLEX中点击Tree中的一行 打开/关闭 节点
- Flex中tree实现的种种细节
- Flex中嵌入Google地图
- Flex中嵌入网页(IFrame)
- SVN服务器更改ip地址客户端怎么设置
- win7下IIS7.0配置wcf 注意事项
- linux-xp互相访问:samba服务器配置
- 杭电1574
- 旋转卡壳解决一类问题(资料) 《转载》
- Flex 4.0中Tree中嵌入CheckBox(实现点击获取值)
- JAVA反射
- JavaWeb应用中获取Spring的ApplicationContext(转)
- linux 消息队列实例讲解
- PreEmptive代码分析技术交流会免费报名中……
- jquery 数组处理
- 通过CMD进入Android的SQlite数据库 查看表中数据内容
- MFC操作excel
- 【读书笔记】overload和override的区别