不知道是哪位前辈写的复选下拉框,拿来后,发现有点,并且不能满足自己的需求,加以修改后,应用到系统中。谢谢前辈,如果看到代码,不要骂我呀。。我是菜鸟。。
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 经测试好用,还有可移动面板,和可改大小面板实例
一个Flex带复选框的树的实现
flex中ComboBox嵌套checkbox的例子以及源代码。可以在下拉框中勾选一个或者多个可选项。
flex复选树形下拉框,在ReportListPage.mxml里面有应用及树数据的加载
flex datagrid 中实现combobox联动,这是我写的一个简单的例子供大家一起学习进步。希望对你们有所帮助。
源于自己正在做的一个项目,Flex,自己写的代码。因为接触Flex没多久,见笑了。
亲测无bug,flex多选下拉框,带checkbox。可以全选反选。item获取、显示等功能完整
上一个版本有点错误遗漏,导致checkboxColumn不能选择,已修正。
Flex 带复选框(CheckBox)的树状下拉框(ComboBox)
Button | ButtonBar | TabBar | ToggleButton | CheckBox | RadioButton | Scroller | HScrollBar VScrollBar | HSlider | VSlider | DropDownList | TextArea | TextInput | ComboBox | List NumericStepper | ...
VSCode的Flex代码段 快速创建MX和Spark组件。 如何使用 在VSCode中安装扩展 打开mxml文件,开始输入组件名称并选择代码段 注意:要在VSCode中创建Flex项目,请安装。 片段 AdvancedDataGrid BorderContainer Box...
用途:一般用于系统管理中多选角色,涉及 1、css样式:flex布局,postion之absolute,relative,画三角形 2、input checkbox类型的 v-model 双向绑定 onchange事件 3、数组过滤及循环遍历 4、子组件向父组件传值
CheckBox control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 DateChooser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...
<END><br>5 , vbo_checkcombo.zip Add a checkbox to a combo box and use it to enabled/disable the combo! or whatever you would like to do with it! <END><br>6 , vbo_controlframe.zip Create your ...