不知道是哪位前辈写的复选下拉框,拿来后,发现有点,并且不能满足自己的需求,加以修改后,应用到系统中。谢谢前辈,如果看到代码,不要骂我呀。。我是菜鸟。。
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”的主题涉及到在ComboBox中集成复选框(checkbox)的功能,这使得用户可以选择多个选项,而不仅仅是单选。下面我们将详细探讨这个主题,包括ComboBox的基本概念、如何添加复选框以及...
本文将深入探讨如何在Flex中的ComboBox实现下拉列表中包含Checkbox的功能,并结合移动面板和可调整大小的面板实例,为你提供一个完整的解决方案。 首先,我们要理解Flex中的ComboBox组件。ComboBox继承自ListBase类...
一个Flex带复选框的树的实现
这个主题——“flex中ComboBox嵌套checkbox的例子以及源代码”——将深入探讨如何实现这种功能。 首先,我们要明白,Flex本身并不直接支持ComboBox内部包含Checkbox的原生功能。但是,通过自定义组件或者使用第三方...
在Flex开发中,"flex checkboxtree复选树形下拉框"是一种常见的用户界面组件,它结合了树形结构和复选框的功能,允许用户在层次结构中进行多选操作。这种组件通常用于数据筛选、配置设置或者层级分类的选择场景。在...
本文将详细讲解如何在Flex中的ComboBox中嵌入Checkbox,并探讨相关的技术细节。 首先,理解Flex的基础是关键。Flex是Adobe开发的一种基于ActionScript的开放源代码框架,用于构建富互联网应用程序(RIA)。它利用...
在Flex编程中,数据网格(DataGrid)是用于展示大量结构化数据的组件,而ComboBox是一种下拉选择框,常用于提供用户可选择的选项。当我们需要在DataGrid的不同列中实现ComboBox的联动效果时,即在一个ComboBox的选择...
### Flex ComboBox 和 CheckBox 的使用详解 #### 一、Flex ComboBox 的使用 在 Flex 开发中,`ComboBox` 控件是一个非常实用的控件,它结合了文本框与下拉列表的功能,用户可以在文本框中输入内容,也可以通过下拉...
在"Flex--AdvanceDataGrid(列头筛选功能,含ComboBox列、Button列、Checkbox列等)"这个项目中,我们将深入探讨如何实现ADG的列头筛选,以及如何集成不同类型的列,如ComboBox列、Button列和Checkbox列。 首先,让...
这个“Flex--AdvanceDataGrid(列头筛选功能,含ComboBox列、Button列、Checkbox列等)修正版”是针对AdvancedDataGrid的一个定制化版本,修复了之前版本中的一个问题,即CheckboxColumn无法被正确选择。 在Flex的...
2. **样式**:利用CSS的`display: flex`属性来调整`<li>`元素的布局,使`checkbox`和文本并排显示。同时,通过CSS控制下拉框的打开和关闭状态。 3. **交互**:使用JavaScript监听事件,例如点击下拉按钮、点击`...
在Flex中,我们可以利用两种主要的组件来实现这样的功能:ComboBox和DropDownList。这两种组件都是用户界面交互的重要元素,允许用户从一组预定义的选项中进行选择。 ComboBox是一种组合输入框和下拉列表的控件,...
总之,Flex的带复选框的树状下拉框是一个结合了Tree组件和ComboBox优势的自定义控件,它提供了层次结构数据的多选能力,大大增强了用户交互体验。通过自定义ItemRenderer和处理相关事件,我们可以轻松地在Flex应用中...
`CheckBoxTreeComboBox`是Flex4中一个自定义组件,它结合了`Tree`和`ComboBox`两种控件的特点。通常,`ComboBox`是一个下拉列表,用户可以从预设的选项中选择一个;而`Tree`则呈现了一个层次结构的数据视图,用户...
在Flex编程环境中,"带复选框的树状ComboBox"是一种高级UI组件,它结合了树形结构和下拉框的功能,并且每个节点都配备有复选框,为用户提供了一种方便的方式来多选树状数据。这样的组件在数据筛选、配置设置等场景中...
1. **组件库**:Flex 提供了一整套预定义的UI组件,如Button、CheckBox、ComboBox等,这些组件可以方便地构建用户界面。API文档会详细解释每个组件的属性、事件和方法。 2. **事件模型**:Flex 使用事件驱动的模型...
1. **控件**:包括基于文本的控件(如Label、Text、TextInput、TextArea和RichTextEditor)、基于按钮的控件(如Button、LinkButton、CheckBox、RadioButton和PopupButton)等。这些控件用于实现各种用户交互功能,...
- 动态创建表单元素:根据数据模型,使用`new`关键字实例化TextField、ComboBox、CheckBox等组件。 - 配置表单元素:设置每个元素的属性,如label、width、height、required等。 - 添加到容器:使用`addChild()`方法...
本篇文章将深入探讨如何在`Flex DataGrid`中实现列中下拉列表(ComboBox)以及行的勾选(CheckBox)功能,这在诸如数据筛选、多选操作等场景中非常常见。 首先,我们要了解`Flex DataGrid`的基本结构。`DataGrid`由...
在Flex中,我们可以扩展mx.controls.CheckBox类,增加必要的属性和方法来满足多选的需求。例如,我们可以添加一个selectedItems数组来存储用户选择的项,同时为每个CheckBox添加事件监听器,以便在用户点击时更新...