我有一个使用复选框itemrenderer的列表。数据提供者是人的集合。当我从文件加载数据时,每个列表项都显示该人的姓名(last,first - labelFunction),复选框的selected属性显示该人的包含属性。即,
史密斯,道格 - [x] 威廉姆斯,鲍勃 - [] 莫里斯,安妮 - [x]但是,每个人还有有效属性。我想禁用非活动人员的复选框(意思是“你不能包括不活跃的人”)。我已经尝试了几种方法来实现这一点,包括在http://forums.adobe.com/thread/416786建议在数据网格中做同样的事情。但是,无论人员的活动状态如何,都不会启用所有复选框。这是我的基本代码:
<mx:List id="peopleIncludedList"
dataProvider="{someProvider}"
labelFunction="peopleLabelFunction">
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox change="onChange(event)"
selected="{outerDocument.isIncluded(data)}">
<mx:Script>
<![CDATA[
private function onChange(e:Event):void
{
...
}
]]>
</mx:Script>
</mx:CheckBox>
</mx:Component>
</mx:itemRenderer>
</mx:List>
对此的任何帮助将不胜感激。谢谢。
- 伊恩
答案 0 :(得分:0)
我会对它采取一些措施,但有时候如果没有样本数据则很难说清楚。
首先,不要在arenderer中引用outerDocument,也不要使用绑定,而是监听dataChange事件
<mx:List id="peopleIncludedList"
dataProvider="{someProvider}"
labelFunction="peopleLabelFunction">
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox change="onChange(event)" dataChange="onDataChange()">
<mx:Script>
<![CDATA[
private function onChange(e:Event):void
{
// not sure what this method is doing
}
private function onDataChange():void{
this.selected = isIncluded(data); // whatever your processing is
if(data.person.active == true){
this.enabled = true;
} else {
this.enabled = false;
}
}
]]>
</mx:Script>
</mx:CheckBox>
</mx:Component>
</mx:itemRenderer>
</mx:List>
答案 1 :(得分:0)
由于stackoverflow每天只通知我新的答案,我没有积极地查看这个帖子,并且更多地参与了Adobe板。无论如何,找到了解决方案。在此引用http://forums.adobe.com/message/3267367。感谢大家的建议和帮助!