2010-11-10 3 views
0

У меня есть список, который использует checkbox itemrenderer. Датапровердер - это коллекция людей. Когда я загружаю данные из файла, каждый элемент списка показывает имя человека (последнее, первое - labelFunction), а выбранное свойство флажка показывает, что объект человека включил свойство. Т.е.,Flex 3 - List - checkbox itemrenderer enabled property

Смит, Дуги - [х] Уильямс, Боб - [] Моррис, Энн - [х]

Однако каждый человек также имеет активной недвижимости. Я хочу отключить флажок для людей, которые неактивны (что означает «вы не можете включать неактивных людей»). Я попробовал несколько способов заставить это работать, в том числе предлагаемое здесь http://forums.adobe.com/thread/416786, чтобы сделать то же самое в datagrid. Тем не менее, ни одна из них не работает, и все флажки включены независимо от статуса человека, активного состояния. Вот мой базовый код:

<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

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

0

Я возьму трещину в этом, но иногда это трудно сказать, без выборочных данных.

Во-первых, не ссылаются на outerDocument в 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> 
+0

ли он не просто уйти с помощью и не беспокоиться о событиях смены данных? Предполагая, что человек и активный, конечно, связаны ... –

+0

@ Грегор Кидди Я не уверен; Я думаю, у него есть два вопроса; проверка/снятие флажка CheckBox и включение/выключение. Я предполагаю, что он может делать как w/bindig, предполагая, что они относятся к свойствам объекта данных. Тот факт, что он вызывал метод для избранных, оставляет это предположение двусмысленным. Однако привязка в itemRenderer вызовет проблемы. – JeffryHouser

+0

@Jeff. Я, конечно, буду, но имея некоторые бит ответа, используя привязку, и некоторые биты не смущают проблему, я думаю. Использование ClassFactory для установки значений для isIncluded (...) материала было бы лучшим способом сделать этот бит, например. Это больший вопрос! Попробуйте ответить на вопросы людей, чтобы они могли продолжить или просвещать их, как это сделать в первую очередь ... –

Смежные вопросы