Flex 3 - 列表 - 复选框itemrenderer启用的属性

时间:2010-11-10 17:55:46

标签: flex list checkbox adobe itemrenderer

我有一个使用复选框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>

对此的任何帮助将不胜感激。谢谢。

- 伊恩

2 个答案:

答案 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。感谢大家的建议和帮助!