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>