flex可多选的ComboBox
八月 18th, 2009
Leave a comment
今天在一Flex群上看到有童鞋需要用到可多选的ComboBox,而且内嵌CheckBox。
下午有空动了动手,做了以下的一个插件(文章最后又下载地址)。
WarmC:MyComboBox,继承自ComboBox,所以用法差不多。如果使用XML数据源的话,得自己手动进行修改。
重写了prompt的set方法,因为自带的prompt set方法会导致dropdown的MouseEvent.ROLL_OUT与MouseEvent.ROLL_OVER监听丢失,可能是因为dropdown被重新构造了的原因。
支持直接在数据源里面指定CheckBox的selected与enabled属性,这两个属性比较常用。下面的Demo里面有详细的内容。
Demo: flex可多选的ComboBox 下载地址1
flex可多选的ComboBox 下载地址2
有问题或者更好的解决办法的请不吝留言。呵呵。
原文链接:http://flex.desizen.com/multiple-selection-combobox/





alex (2009/08/19)
多开朗的一孩子啊,纯支持!
warmC (2009/08/20)
@alex:
哥们怎知道我开朗?我一直都以为我隐藏的很好的啊。
w3d9 (2009/10/20)
兄弟,下载不了吗
warmC (2009/10/20)
@w3d9: 用这个地址下载得了http://www.boxcn.net/shared/l5cyum7ne1 大米盘现在也被墙掉了,杯具!
xyb (2009/12/02)
不错,不过有些细节没有处理好。
改了下CheckBoxItemRenderer如下接口,不然dataprovider为空数组时会出错。
override public function set data(value:Object):void{
if ( value )
{
this.selected = value.selected;
this.currData = value;
this.label=value.label;
}
}
这个接口直接用label属性作为文字属性了,例子里面MyComboBox上面将labelField设成label…
warmC (2009/12/03)
yxs (2010/01/15)
为什么格式是xmlList名称在下拉框里面都是空呀
warmC (2010/01/15)
@yxs: 名称需要定义为节点label,可以去看Demo里面的CheckBoxItemRenderer.as这个类。
yxs (2010/01/15)
还有一个问题
private function onClickCheckBox(e:Event):void{ 这个方法里的
listBase.selectedItems = selectedItems;这条语句赋不上值
其中selectedItems的值是
false
,
true
listBase.selectedItems为
false
但listBase.selectedItems = selectedItems;之后
listBase.selectedItems的值还是
false
不知道哪里出了问题
yxs (2010/01/15)
忘记说了,我的数据格式是xml的
warmC (2010/01/15)
@yxs:你可以在set data(value:Object)方法里面trace一下value.enable,有时候这个值是true/false,有时候则是整个enable xml节点。未深入研究,你可以去看看这个地方!
yxs (2010/01/21)
好像有些时候选多个的时候选不上,取消选中的时候会取消别的值- =