Flex List 控件里的小坑 -- Checkbox 动态设置 enabled

用 Flex 开发项目.
创建一个 checkbox list 控件. 然后里面某些选项是默认选中,且不可取消的.


<mx:List id="columnList" dataProvider="{dataList}">
<mx:itemRenderer>
<mx:CheckBox xmlns:mx="http://www.adobe.com/2006/mxml" label="data.displayName}">
<mx:Script>
<![CDATA[
override public function set data( value:Object ) : void {
super.data = value;
if(data != null){
this.selected = data.selected;
this.enabled = data.enabled;
}
}
]]>
</mx:Script>
</mx:CheckBox>
</mx:itemRenderer>
</mx:List>


一般思路这样就OK了.但是实际发现 checkbox 依然可以编辑.
通过调试现实函数override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
发现, checkbox 的 enabled 被又设置为了 true.
继续查看源码...
......
......
在 List.as 里发现的罪魁祸首, makeRowsAndColumns方法里

item.data = data;
item.enabled = enabled;
item.visible = true;

所以...以上代码只能改成

<mx:List id="columnList" dataProvider="{dataList}">
<mx:itemRenderer>
<mx:CheckBox xmlns:mx="http://www.adobe.com/2006/mxml" label="data.displayName}">
<mx:Script>
<![CDATA[
override public function set data( value:Object ) : void {
super.data = value;
if(data != null){
this.selected = data.selected;
}
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
this.enabled = data.enabled;
]]>
</mx:Script>
</mx:CheckBox>
</mx:itemRenderer>
</mx:List>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值