




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设置带checkBox的树一、重写Tree的TreeItemRenderer,添加checkBoxpackage com.FunctionTreeimport flash.events.Event;import mx.collections.ICollectionView;import mx.collections.IList;import mx.collections.IViewCursor;import mx.controls.CheckBox;import mx.controls.Tree;import mx.controls.treeClasses.ITreeDataDescriptor;import mx.controls.treeClasses.TreeItemRenderer;import mx.controls.treeClasses.TreeListData;/* * 支持CheckBox的TreeItemRenderer * author Montage */public class TreeCheckBoxRenderer extends TreeItemRendererpublic function TreeCheckBoxRenderer()super();/* * 表示CheckBox控件从data中所取数据的字段 */private var _selectedField:String = selected;protected var checkBox:CheckBox;/* * 构建CheckBox */override protected function createChildren():voidsuper.createChildren();checkBox = new CheckBox();checkBox.addEventListener(Event.CHANGE, changeHandler);addChild( checkBox );/* * 点击checkbox时,更新dataProvider * param event */protected function changeHandler( event:Event ):voidif( data & data_selectedField != undefined )data_selectedField = checkBox.selected;var myListData:TreeListData = TreeListData(this.listData);var tree:Tree = Tree(myListData.owner);toggleChildren(data,tree); private function toggleChildren (item:Object, tree:Tree):voidif (item = null)return;elsevar treeData:ITreeDataDescriptor = tree.dataDescriptor;var tmpTree:IList = tree.dataProvider as IList;item_selectedField = checkBox.selected;tmpTree.itemUpdated(item,_selectedField,item_selectedField,checkBox.selected);if (treeData.hasChildren(item)var children:ICollectionView = treeData.getChildren (item);var cursor:IViewCursor = children.createCursor();while (!cursor.afterLast)toggleChildren(cursor.current, tree);cursor.moveNext();override public function set data(value:Object):voidsuper.data = value;checkBox.selected = data_selectedField ;/* * 初始化控件时, 给checkbox赋值 */override protected function commitProperties():mitProperties();if( data & data_selectedField != undefined )checkBox.selected = data_selectedField;elsecheckBox.selected = false;/* * 重置itemRenderer的宽度 */override protected function measure():voidsuper.measure();measuredWidth += checkBox.getExplicitOrMeasuredWidth();/* * 重新排列位置, 将label后移 * param unscaledWidth * param unscaledHeight */override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):voidsuper.updateDisplayList(unscaledWidth, unscaledHeight);var startx:Number = data ? TreeListData( listData ).indent : 0;if (disclosureIcon)disclosureIcon.x = startx;startx = disclosureIcon.x + disclosureIcon.width;disclosureIcon.setActualSize(disclosureIcon.width,disclosureIcon.height);disclosureIcon.visible = data ?TreeListData( listData ).hasChildren :false;if (icon)icon.visible = false ;/*icon.x = startx;startx = icon.x + icon.measuredWidth;icon.setActualSize(icon.measuredWidth, icon.measuredHeight);*/checkBox.move(startx, ( unscaledHeight - checkBox.height ) / 2 );label.x = startx + checkBox.getExplicitOrMeasuredWidth();2、 添加组件FunctionTree,继承Tree!CDATAimport mx.collections.ArrayCollection;import mx.collections.Sort;import mx.collections.SortField;import mx.controls.Alert;import ponents.mediaClasses.VolumeBar;private var _showCheckBox:Boolean = true ;/标识是否显示checkBoxprivate var _dataSource:ArrayCollection ;/初始数据源private var _selectedDataSource:ArrayCollection = new ArrayCollection () ;/存储选中的数据private var _treeDataSource:ArrayCollection = new ArrayCollection ();/整理之后的树形 数据源private var _parentColumnsName:String = parentID;/设置父节点的列名private var _parentID:String = 0;/设置初始 父节点值private var _selectedCheckColumnsName:String = selected;/设置标志选中checkbox的列明private var _childColumnsName:String = functionID;/设置子节点的列名private function init():voidsetItemRender();_treeDataSource= parentData(_parentID);this.dataProvider= _treeDataSource ;private function setItemRender():voidif(_showCheckBox)this.itemRenderer = new ClassFactory(com.FunctionTree.TreeCheckBoxRenderer);/引用编写的TreeItemReaderer的位置private function getSelectedData(arr:ArrayCollection):ArrayCollectionfor(var i:int = 0 ; i arr.length ; i+ )if(arr.getItemAt(i).children != null)/判断有没有子节点var objArr:ArrayCollection = new ArrayCollection ();for(var columns:String in arr.getItemAt(i).children)/遍历object,columns是1,2,3objArr.addItem(arr.getItemAt(i).childrencolumns);/将object转换成数字getSelectedData(objArr);/重新获取选中数据elseif(arr.getItemAt(i).selected)/判断改数据是否选中,selected是设置的选中与否的标志_selectedDataSource.addItem(arr.getItemAt(i); return _selectedDataSource ;/* * 创建Tree的数据源 * */private function parentData(parentID_:String):ArrayCollectionvar childData:ArrayCollection = getChildData(parentID_);var child:ArrayCollection = new ArrayCollection () ;tryfor(var i:int = 0 ; i 0)itemchildren= arr;/根据父节点获取子节点if(!item.hasOwnProperty(_selectedCheckColumnsName)/判断是否有此属性item_selectedCheckColumnsName = false ;if(_selectedCheckColumnsName != selected)itemselected = item_selectedCheckColumnsName ;/将判断是否选中的属性换成selectedchild.addItem(item);catch(e:Error)Alert.show(您还有属性未设置,请设置!,错误);return child; return child ;/* *根据父节点,获取子节点 * */private function getChildData(parentID_:String):ArrayCollectionvar childData:ArrayCollection = new ArrayCollection () ;tryfor(var i:int = 0 ; i 三、用法FunctionTree组件使用说明:parentColumnsName属性是设置数据库中父节点的列名,childColumnsName属性是为了设置子节点的列,selectedC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 装修工程合同范本
- 给外地亲友写封信
- 三人合作项目合同书
- 房地产项目买卖合同书
- 电路理论习题(含参考答案)
- 文化产业园马戏表演合同合作协议书范本
- 全面升级:河南电子合同政务门户
- 度建筑废渣承包运输合同细则
- 合同法修订与工程招投标实践
- 战略合作保密合同协议
- 教科版科学四年级下册第二单元《电路》单元作业设计
- 中医治疗“粉刺”医案16例
- 吊篮施工安全管理培训课件
- 《用户体验设计导论》第14章-用户体验质量的测试与评价课件
- 圆的面积(全国一等奖)
- 我国优抚安置政策法规考试试题
- 2023学年完整公开课版线桥偏心
- 2023年上海嘉定区国资委下属企业向社会招聘笔试参考题库附带答案详解
- 新生儿缺氧缺血性脑病诊疗指南和操作规范
- 民工学校开展活动记录
- 公司发票报销说明
评论
0/150
提交评论