`

Flex comboBox checkbox

 
阅读更多
不知道是哪位前辈写的复选下拉框,拿来后,发现有点,并且不能满足自己的需求,加以修改后,应用到系统中。谢谢前辈,如果看到代码,不要骂我呀。。我是菜鸟。。

12月13号,测试代码后发现还是有很多错误。重新调试修改。应该没啥问题。哎。。。

as MyComboBox:

package Comp.component
{
	import flash.events.Event;
	import flash.events.MouseEvent;
	import mx.controls.Alert;
	import mx.controls.ComboBox;
	import mx.core.ClassFactory;
	import mx.events.FlexEvent;
	import mx.events.ListEvent;

	public class MyComboBox extends ComboBox{
		private var mouseOut:Boolean=true;
		[Bindable]
		private var promptText:String="";
		public function MyComboBox(){
			super();
			this.addEventListener(FlexEvent.CREATION_COMPLETE,onCreateCompleteHandle);
			this.itemRenderer=new ClassFactory(CheckBoxItemRenderer);
		}
		private function onCreateCompleteHandle(event:FlexEvent):void{
			dropdown.allowMultipleSelection=true;
			close();
		}
		private function initListener():void{
			if(!dropdown.hasEventListener(MouseEvent.ROLL_OVER))
				dropdown.addEventListener(MouseEvent.ROLL_OVER,onRollOverHandle);
			if(!dropdown.hasEventListener(MouseEvent.ROLL_OUT))
				dropdown.addEventListener(MouseEvent.ROLL_OUT,onRollOutHandle);
		}
		private function onRollOverHandle(event:MouseEvent):void{
			mouseOut=false;
		}
		private var changeEvent:ListEvent;
		private function onRollOutHandle(event:MouseEvent):void{
			mouseOut=true;
			var selectedStr:String = "";
			if(selectedItems.length>0){
				//赋值
				for each(var item:Object in selectedItems){
					if(item.selected == true){
					 	selectedStr += item.labelName+"/";
					}
                }
                this.promptText = selectedStr.substring(0,selectedStr.length -1) ;
				close();
				changeEvent= new ListEvent( ListEvent.CHANGE )
				dispatchEvent( changeEvent);
			}
		}
		
		public function set selectedItems(value:Array):void{
			if (dropdown)
				dropdown.selectedItems=value;
		}

		[Bindable("change")]
		public function get selectedItems():Array{
			return dropdown?dropdown.selectedItems:[];
		}
		
		public function set selectedIndices(value:Array):void{
			if (dropdown)
				dropdown.selectedIndices=value;
		}

		[Bindable("change")]
		public function get selectedIndices():Array{
			return dropdown?dropdown.selectedIndices:[];
		}
		
		override public function close(trigger:Event=null):void{
			initListener();
			if (mouseOut){
				super.close(trigger);
			}
			this.textInput.text=promptText;
			this.toolTip = promptText;
		}
		override public function set prompt(value:String):void{
			promptText=value;
		}
	}
}

as CheckBoxItemRenderer:
package Comp.component
{
	import flash.events.Event;
	
	import mx.controls.Alert;
	import mx.controls.CheckBox;
	import mx.controls.listClasses.ListBase;
	import mx.utils.ArrayUtil;
	
	public class CheckBoxItemRenderer extends CheckBox{
		
		/**存储当前列数据对象**/
		private var currData:Object; 
		
		public function CheckBoxItemRenderer(){
			super();
			this.addEventListener(Event.CHANGE,onClickCheckBox);
		}
		
		override public function set data(value:Object):void{
			this.selected = value.selected;
			this.currData = value; 
			this.label=value.labelName;
		}
		override public function set enabled(value:Boolean):void{
			if(currData){
				value=currData.enabled==false?false:true;
			}
			super.enabled=value;
		}
		private function onClickCheckBox(e:Event):void{	
			var listBase:ListBase = ListBase(listData.owner);
			var selectedItems:Array = listBase.selectedItems;
			currData.selected = this.selected;
			if(this.selected == true){
				selectedItems.push(currData);
			}else{
				selectedItems.splice(ArrayUtil.getItemIndex(currData,selectedItems),1);
			}
			listBase.selectedItems=selectedItems;
		}
	}
}
在mxml中调用。

<common:MyComboBox id="org" dataProvider="{properties_org}"  labelField="labelName" prompt="请选择部门" height="28" fontSize="12" width="146">
			 
			 </common:MyComboBox>


程序默认会选中第一条数据,故和后台交互时需要进行判断处理下:
as

var departid:String = "";
for each(var item:Object in org.selectedItems){
	if(item.selected == true){
		departid+=item.id+"/";
	}
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    flex ComboBox checkbox

    这个“flex ComboBox checkbox”的主题涉及到在ComboBox中集成复选框(checkbox)的功能,这使得用户可以选择多个选项,而不仅仅是单选。下面我们将详细探讨这个主题,包括ComboBox的基本概念、如何添加复选框以及...

    flex实现 ComboBox中下拉checkbox

    本文将深入探讨如何在Flex中的ComboBox实现下拉列表中包含Checkbox的功能,并结合移动面板和可调整大小的面板实例,为你提供一个完整的解决方案。 首先,我们要理解Flex中的ComboBox组件。ComboBox继承自ListBase类...

    一个Flex带复选框的树的实现

    一个Flex带复选框的树的实现

    flex中ComboBox嵌套checkbox的例子以及源代码

    这个主题——“flex中ComboBox嵌套checkbox的例子以及源代码”——将深入探讨如何实现这种功能。 首先,我们要明白,Flex本身并不直接支持ComboBox内部包含Checkbox的原生功能。但是,通过自定义组件或者使用第三方...

    flex checkboxtree复选树形下拉框

    在Flex开发中,"flex checkboxtree复选树形下拉框"是一种常见的用户界面组件,它结合了树形结构和复选框的功能,允许用户在层次结构中进行多选操作。这种组件通常用于数据筛选、配置设置或者层级分类的选择场景。在...

    FLEX中下拉框嵌入Checkbox

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

    flex datagrid 中实现combobox联动

    在Flex编程中,数据网格(DataGrid)是用于展示大量结构化数据的组件,而ComboBox是一种下拉选择框,常用于提供用户可选择的选项。当我们需要在DataGrid的不同列中实现ComboBox的联动效果时,即在一个ComboBox的选择...

    flex combox和checkbox总结

    ### Flex ComboBox 和 CheckBox 的使用详解 #### 一、Flex ComboBox 的使用 在 Flex 开发中,`ComboBox` 控件是一个非常实用的控件,它结合了文本框与下拉列表的功能,用户可以在文本框中输入内容,也可以通过下拉...

    Flex--AdvanceDataGrid(列头筛选功能,含ComboBox列、Button列、Checkbox列等)

    在"Flex--AdvanceDataGrid(列头筛选功能,含ComboBox列、Button列、Checkbox列等)"这个项目中,我们将深入探讨如何实现ADG的列头筛选,以及如何集成不同类型的列,如ComboBox列、Button列和Checkbox列。 首先,让...

    Flex--AdvanceDataGrid(列头筛选功能,含ComboBox列、Button列、Checkbox列等)修正版

    这个“Flex--AdvanceDataGrid(列头筛选功能,含ComboBox列、Button列、Checkbox列等)修正版”是针对AdvancedDataGrid的一个定制化版本,修复了之前版本中的一个问题,即CheckboxColumn无法被正确选择。 在Flex的...

    flex多选下拉框

    2. **样式**:利用CSS的`display: flex`属性来调整`&lt;li&gt;`元素的布局,使`checkbox`和文本并排显示。同时,通过CSS控制下拉框的打开和关闭状态。 3. **交互**:使用JavaScript监听事件,例如点击下拉按钮、点击`...

    flex 下拉 带复选框 多选

    在Flex中,我们可以利用两种主要的组件来实现这样的功能:ComboBox和DropDownList。这两种组件都是用户界面交互的重要元素,允许用户从一组预定义的选项中进行选择。 ComboBox是一种组合输入框和下拉列表的控件,...

    Flex combox

    总之,Flex的带复选框的树状下拉框是一个结合了Tree组件和ComboBox优势的自定义控件,它提供了层次结构数据的多选能力,大大增强了用户交互体验。通过自定义ItemRenderer和处理相关事件,我们可以轻松地在Flex应用中...

    flex4 下拉框可以多选 CheckBoxTreeComboBox

    `CheckBoxTreeComboBox`是Flex4中一个自定义组件,它结合了`Tree`和`ComboBox`两种控件的特点。通常,`ComboBox`是一个下拉列表,用户可以从预设的选项中选择一个;而`Tree`则呈现了一个层次结构的数据视图,用户...

    带复选框的树状ComboBox

    在Flex编程环境中,"带复选框的树状ComboBox"是一种高级UI组件,它结合了树形结构和下拉框的功能,并且每个节点都配备有复选框,为用户提供了一种方便的方式来多选树状数据。这样的组件在数据筛选、配置设置等场景中...

    Flex_API.zip_flex

    1. **组件库**:Flex 提供了一整套预定义的UI组件,如Button、CheckBox、ComboBox等,这些组件可以方便地构建用户界面。API文档会详细解释每个组件的属性、事件和方法。 2. **事件模型**:Flex 使用事件驱动的模型...

    FLex文档教程

    1. **控件**:包括基于文本的控件(如Label、Text、TextInput、TextArea和RichTextEditor)、基于按钮的控件(如Button、LinkButton、CheckBox、RadioButton和PopupButton)等。这些控件用于实现各种用户交互功能,...

    flex动态表单源码

    - 动态创建表单元素:根据数据模型,使用`new`关键字实例化TextField、ComboBox、CheckBox等组件。 - 配置表单元素:设置每个元素的属性,如label、width、height、required等。 - 添加到容器:使用`addChild()`方法...

    flexdatagrid实现列中下拉列表与行勾选功能

    本篇文章将深入探讨如何在`Flex DataGrid`中实现列中下拉列表(ComboBox)以及行的勾选(CheckBox)功能,这在诸如数据筛选、多选操作等场景中非常常见。 首先,我们要了解`Flex DataGrid`的基本结构。`DataGrid`由...

    Flex 写的一个combox多选控件

    在Flex中,我们可以扩展mx.controls.CheckBox类,增加必要的属性和方法来满足多选的需求。例如,我们可以添加一个selectedItems数组来存储用户选择的项,同时为每个CheckBox添加事件监听器,以便在用户点击时更新...

Global site tag (gtag.js) - Google Analytics