`

flex tree中嵌入checkBox级联选择

    博客分类:
  • flex
阅读更多

可级联选择tree中的checkBox

package minntree
{
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	import mx.controls.Alert;
	import mx.controls.CheckBox;
	import mx.controls.Tree;
	import mx.controls.treeClasses.TreeItemRenderer;
	import mx.controls.treeClasses.TreeListData;
	import mx.events.TreeEvent;

	/**  
	 * 支持CheckBox的TreeItemRenderer  
	 * @author Montage 
	 * @modify chenzhimin   
	 */    
	public class TreeCheckBoxRender extends TreeItemRenderer   
	{   
		public function TreeCheckBoxRender()   
		{   
			super();   
		}   
		
		/**  
		 * 表示CheckBox控件从data中所取数据的字段  
		 */        
		private var _selectedField:String = "selected";   
		
		protected var checkBox:CheckBox;   
		
		/**  
		 * 构建CheckBox  
		 */        
		override protected function createChildren():void  
		{   
			super.createChildren();   
			checkBox = new CheckBox();   
			addChild( checkBox );   
			checkBox.addEventListener(Event.CHANGE, changeHandler);   
			checkBox.addEventListener(MouseEvent.CLICK,updateCheck);
		}   
		
		protected function updateCheck(e:Event):void{
	
			var b:Boolean=this.dispatchEvent(new Event("updateTreeEvent",true));
		}
		
		
		/**  
		 * 点击checkbox时,更新dataProvider  
		 * @param event  
		 */        
		protected function changeHandler( event:Event =null):void  
		{   
			if( data && data[_selectedField] != undefined )   
			{   
				data[_selectedField] = checkBox.selected;   
			}   
			if(data.hasOwnProperty("children")){
				var arr:Array=data["children"];
				for(var i:int;i<arr.length;i++){
					var obj:Object=arr[i];
					obj[_selectedField]=checkBox.selected;
				}
			}
			
		}    
		
		/**  
		 * 初始化控件时, 给checkbox赋值  
		 */        
		override protected function commitProperties():void  
		{   
			super.commitProperties();   
//			trace(data[_selectedField])   
			if( data && data[_selectedField] != undefined )   
			{   
				checkBox.selected = data[_selectedField];   
			}   
			else  
			{   
				checkBox.selected = false;   
			}   
		}   
		
		/**  
		 * 重置itemRenderer的宽度  
		 */        
		override protected function measure():void  
		{   
			super.measure();   
			measuredWidth += checkBox.getExplicitOrMeasuredWidth();   
		}   
		
		/**  
		 * 重新排列位置, 将label后移  
		 * @param unscaledWidth  
		 * @param unscaledHeight  
		 */        
		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void  
		{   
			super.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.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();   
		}   
	}   

}

 

<?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="application1_creationCompleteHandler(event)">
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.events.FlexEvent;
			[Bindable]  
			public var collection:ArrayCollection = new ArrayCollection([  
				{ "name" : "上海", "selected":false, "children":[  
					{ "name":"黄浦", "selected":false },  
					{ "name":"浦东", "selected":true },  
					{ "name":"静安", "selected":false },  
					{ "name":"徐汇", "selected":false }  
				]},  
				{ "name":"北京", "selected":false, "children":[  
					{ "name":"海淀", "selected":false },  
					{ "name":"朝阳", "selected":true },  
					{ "name":"丰台", "selected":false }  
				]}  
			]);  


			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				// TODO Auto-generated method stub
				this.addEventListener("updateTreeEvent",function():void{
					trList.invalidateList();
					
				});
			}

			private function iconFunction(item:Object):*{
				
				if(!item.children){
				}else{
					if(trList.isItemOpen(item)){
						
						return trList.getStyle("folderOpenIcon");
					}else{  
						return trList.getStyle("folderClosedIcon");
					}
				}
			}
		]]>
	</fx:Script>
	<mx:Tree id="trList" x="174" y="81" labelField="name" width="281" height="218" itemRenderer="minntree.TreeCheckBoxRender" dataProvider="{collection}" iconFunction="iconFunction"></mx:Tree>
</s:Application>


参考信息:http://www.iteye.com/topic/326302

 

分享到:
评论

相关推荐

    flex tree+checkbox级联勾选

    "Flex Tree + Checkbox级联勾选"是一个重要的功能点,通常出现在数据管理、配置界面或文件管理系统中,允许用户进行批量选择或级联操作。 首先,我们来详细了解一下Flex Tree。Flex Tree是基于Adobe Flex技术的一种...

    C#树形菜单的CheckBox级联选择

    总结来说,C#中实现树形菜单的CheckBox级联选择主要涉及`TreeView`控件的事件处理和节点遍历。通过监听`AfterCheck`事件并递归更新节点状态,可以实现用户友好的多级选择功能。这样的功能在许多应用场景中都非常实用...

    Flex tree+checkbox可实现级联勾选 修改

    flex tree+checkbox可实现级联勾选 修改后 修改CheckTreeDemoRenderer.as这个文件中 while (!cursor.afterLast){ if (cursor.current.@state == STATE_CHECKED) { noChecks++; }else if (cursor.current.@state =...

    Flex Tree 中Checkbox

    2. **Checkbox集成**:在Flex Tree中添加Checkbox,通常是为了提供多选功能。这需要自定义TreeItemRenderer,以便在每个节点上显示一个Checkbox。当用户勾选Checkbox时,表示选择了该节点。这个自定义的renderer需要...

    js实现checkbox级联选择

    使用javascript实现checkbox级联选择

    带CheckBox和级联操作的Tree

    带CheckBox和级联操作的Tree 带CheckBox和级联操作的Tree 带CheckBox和级联操作的Tree

    flex tree 中渲染checkBox

    `flex tree 中渲染checkBox`这个话题涉及到在Flex Tree组件的每个节点上添加复选框控件,使得用户能够通过单击复选框来选择或取消选择树的特定部分。这在数据分层展示和多选操作的场景中特别常见,例如文件管理器或...

    FLEX中下拉框嵌入Checkbox

    本文将详细讲解如何在Flex中的ComboBox中嵌入Checkbox,并探讨相关的技术细节。 首先,理解Flex的基础是关键。Flex是Adobe开发的一种基于ActionScript的开放源代码框架,用于构建富互联网应用程序(RIA)。它利用...

    flex中tree和checkbox结合使用的插件

    在Flex开发中,Tree组件和Checkbox控件的结合使用是一个常见的需求,特别是在构建具有层级结构并需要用户进行多选操作的界面时。本插件专为此目的设计,它允许用户在树形结构中通过复选框来选择或取消选择节点,从而...

    纯JS+HTML写的checkBox Tree 级联选中 好用无BUG

    在前端开发中,CheckBox Tree(复选框树)是一种常见的组件,用于展示具有层级关系的数据,并支持用户进行多级选择。这个"纯JS+HTML写的checkBox Tree 级联选中"实例,解决了其他示例中可能存在的BUG,提供了一个...

    flex带复选框的tree,flex checkboxtree

    在Flex CheckboxTree中,每个树节点都有一个与之关联的复选框。当用户点击复选框时,相应的树节点会被选中或取消选中。开发者可以通过监听CheckBoxTree的事件来处理这些变化,例如,当节点的选中状态改变时,更新...

    flex Tree checkbox 修改过后的

    Flex Tree控件是一种用于展示层次结构数据的UI组件,它允许用户通过节点展开和折叠来探索数据。...在实际应用中,可以根据具体需求进行调整,比如添加禁用状态、改变选中样式、实现级联选择等特性。

    flex Tree 复选框。

    在这个特定的场景中,我们关注的是在Flex Tree中集成复选框功能,这为用户提供了一种直观的方式来选择或操作树形结构中的多个节点。让我们深入探讨这个主题,了解如何实现Flex Tree复选框以及其与父目录状态之间的...

    flex 中tree渲染checkbox

    在Flex编程环境中,Tree组件是一种常用的用户界面元素,用于展示层次结构的数据。当我们需要在树形结构中添加复选框(checkbox)功能时,可以实现用户对多项选择的操作,这在数据筛选、配置设置等场景中非常常见。...

    ExtJS4.2 tree 级联选择

    在ExtJS库中,Tree组件允许我们展示和操作数据以树形结构显示,而级联选择功能则意味着当用户选择一个节点时,它的所有子节点也会被自动选中,反之亦然,如果取消选中父节点,其所有子节点也将被取消选中。...

    jQuery实现的checkbox级联选择下拉菜单效果示例

    本文实例讲述了jQuery实现的checkbox级联选择下拉菜单效果。分享给大家供大家参考,具体如下: &lt;html&gt; &lt;head&gt; &lt;meta http-equiv=Content-Type content=text/html; charset=utf-8&gt; &lt;title&gt;&...

    Flex4的Tree控件加CheckBox

    在这个场景中,我们关注的是如何在Flex4的Tree控件中添加CheckBox,以便用户可以多选树形结构中的节点。 Tree控件在Flex中用于展示层次结构的数据,它允许用户展开和折叠节点,查看和导航数据结构。在很多情况下,...

    flex中Datagride嵌套checkbox

    在Flex开发中,数据网格(DataGrid)是一种常用的组件,用于展示和操作大量结构化数据。在实际应用中,我们经常需要在DataGrid的列中嵌套复选框(Checkbox),以便用户可以进行多选操作或者对数据进行勾选状态的设置...

    带有checkbox的TREE列表级联的选择子栏目的JAVA标签形式的实现

    本文将详细讲解如何实现一个带有复选框(Checkbox)的树形列表(TREE LIST)的级联选择功能,以及相关的Java标签形式实现。这种功能常见于权限管理、组织结构选择等场景,让用户能够方便地进行多层级的勾选操作。 ...

Global site tag (gtag.js) - Google Analytics