Flex List 控件里的小坑 - Checkbox 动态设立 enabled
Flex List 控件里的小坑 -- Checkbox 动态设置 enabled
用 Flex 开发项目.
创建一个 checkbox list 控件. 然后里面某些选项是默认选中,且不可取消的.
一般思路这样就OK了.但是实际发现 checkbox 依然可以编辑.
通过调试现实函数override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
发现, checkbox 的 enabled 被又设置为了 true.
继续查看源码...
......
......
在 List.as 里发现的罪魁祸首, makeRowsAndColumns方法里
所以...以上代码只能改成
用 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>