Flex 3 - список - флажок itemrenderer включен свойство

У меня есть список, который использует флажок itemrenderer. Поставщик данных - это собрание людей. Когда я загружаю данные из файла, каждый элемент списка показывает имя человека (last, first - labelFunction), а свойство выбранного флажка показывает включенное свойство человека. То есть,

Смит, Дуг - [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 ответа

Решение

Так как stackru только ежедневно уведомляет меня о новых ответах, я не стал активно изучать эту ветку и больше участвовал в работе советов Adobe. Во всяком случае, нашел решение. Ссылка это здесь http://forums.adobe.com/message/3267367. Спасибо всем за ваши предложения и полезность!

Я попытаюсь это сделать, но иногда это трудно определить без выборочных данных.

Во-первых, не ссылайтесь на externalDocument в arenderer и не используйте привязку, вместо этого слушайте событие 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>
Другие вопросы по тегам