2010-10-18 3 views
0

У меня есть выпадающий список, как:Flex DropDownList LabelFunction Выпуск

<s:DropDownList id="cad" width="100%" dataProvider="{model.referenceList.refPatientResponseLists}" 
labelFunction="myFunction"        selectedIndex="{model.cd.code}"/> 

Теперь refPatientResponseLists возвращает 3 строки данных & мне нужно, чтобы отобразить 3 значения в меню списка. Поэтому у меня есть функция метки как:

public function myFunction(item:Object):String { 
    return item['refPatientResponses'] [cad.dataProvider.getItemIndex(item)]['responseDesc']+''; 
} 

Но это отображает только 1 значение в раскрывающемся списке. Поэтому он возвращает что-то вроде:

return item['refPatientResponses'] [0] ['responseDesc']+'' 

Как я могу получить все 3 значения в раскрывающемся списке. Надеюсь, мой вопрос понятен и ожидает ответа.

Благодаря

Хариш

структура объекта из журналов:

(Typed Object #1 'datacollection.model.ReferenceList') 
    (Array #3) 
    refPatientResponseLists = (Externalizable Object #4 'flex.messaging.io.ArrayCollection') 
     (Array #5) 
     [0] = (Typed Object #6 'datacollection.model.RefPatientResponseList') 
      refPatientResponses = (Externalizable Object #7 'flex.messaging.io.ArrayCollection') 
      (Array #8) 
       [0] = (Typed Object #9 'datacollection.model.RefPatientResponse') 
       responseSequence = 1 
       responseDesc = "No" 
       responseCode = 28 
       responseTypeCode = 10 
       [1] = (Typed Object #10 'datacollection.model.RefPatientResponse') 
       responseSequence = 2 
       responseDesc = "Yes" 
       responseCode = 29 
       responseTypeCode = 10 
       [2] = (Typed Object #11 'datacollection.model.RefPatientResponse') 
       responseSequence = 3 
       responseDesc = "Claim Not Found" 
       responseCode = 30 
       responseTypeCode = 10 

ответ

0

Хорошо я был в состоянии решить эту проблему с помощью

Model.referenceList.refPatientResponseLists.getItemAt(0).refPatientResponses 

Может быть полезно для тех, кто имеют аналогичные проблемы :)

0

Я неясными, если ваша проблема в том, что ваш выпадающий список имеет только один пункт или, что все элементы выпадающий список отображает один и тот же текст; но я написал этот ответ, предполагая первое.

Вы запустили режим отладки? Сколько раз вызывается labelFunction? Я думаю, что labelFunction - это красная селедка в этом случае. Если в списке отображается только один элемент, это, скорее всего, потому, что он считает, что dataProvider имеет только один элемент.

Метка следует вызывать 3 раза, если у вас есть dataProvider с тремя элементами. Он вызывается один раз для каждого элемента.

Как правило, мой опыт привязки наиболее согласован, если я не привязываюсь к нескольким объектам. Таким образом, вы это было бы хорошо:

model.referenceList 

или это

referenceList.refPatientResponseLists 

Но я бы не стал ожидать, что это работает:

model.referenceList.refPatientResponseLists 

Итак, вопрос у меня есть ты что три элемента возвращаются в dataProvider? Вы уверены, что компонент знает, что три элемента находятся в вашем DataProvider (правильное обновление AKA Is Binding)?

Без знания структуры объекта трудно отладить функцию labelFunction, но вам не нужно использовать функцию getItemIndex.

+0

Спасибо за ответ Flextras. Я могу подтвердить, что он возвращает 3 значения, потому что когда я меняю его на возврат элемента ['refPatientResponses'] [1] ['responseDesc'] + ''; Я получаю «Да». Значения «Нет», «Да» и «Нет записей». Я добавил структуру объекта из журналов в основной вопрос. – Harry

+0

Какие журналы используют эту структуру объектов? Моя интуиция заключается в том, что вы неправильно сверляете компоненты в labelFunction.Использование getItemIndex просто поражает меня как странное. – JeffryHouser

+0

Журналы - это когда мы устанавливаем уровень ведения журнала для отладки в services-config.xml. Я понимаю, что использование getItemIndex неверно. Я просто хочу, чтобы функция метки была вызвана 3 раза, а затем получить responseDesc для каждой строки и отобразить ее в выпадающем списке. Но он, кажется, вызывает функцию только один раз, хотя есть три строки. Есть ли лучший способ сделать это. Пожалуйста, дайте мне знать. – Harry

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