Выбор пользовательских объектов из выпадающего списка - PullRequest
0 голосов
/ 27 сентября 2011

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

Скажем, у меня есть пользовательский тип данных (скажем, типа Dog). Собака содержит имя, породу и возраст. Я храню каждый экземпляр собаки в коллекции ArrayCollection:

[Bindable]
private var dogData : ArrayCollection;

Эта коллекция ArrayCollection содержит объекты 1..N Dog с соответствующей информацией. Теперь выпадающий список выглядит так:

<s:DropDownList x="81" y="178" id="dogSelected" prompt="Dog Selected:" dataProvider="{dogData}" labelField="dogNameData"  />

dogNameData предположительно будет исходить из пользовательского класса ActionScript, в котором есть поле 'name' объекта Dog в этом объекте.

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

var theDog : Dog;
theDog = dogSelected.selectedItem;

Однако ActionScript, похоже, не похож на это. Теперь я прочитал и обнаружил, что использование поля метки - это способ выбрать это. Мне не удалось выбрать предмет собаки, поэтому я могу привязать его к:

var selectedDogBreed : String;
//var theDog : Dog = the selected object from my drop down
selectedDogBreed = theDog.breed

Может ли кто-нибудь помочь мне выбрать этот объект из выпадающего списка? Большое спасибо заранее.

Также следует отметить, что коллекция ArrayCollection генерируется динамически. В моем реальном приложении я пытаюсь выяснить это, мой массив пользовательских данных является динамическим. Ничто не жестко закодировано

Ответы [ 2 ]

0 голосов
/ 27 сентября 2011

Вы пробовали?

trace( 'name ' + (dogData[dogSelected.selectedIndex] as Dog).name )


или без типа литья

trace( 'name ' + dogSelected.selectedItem.name )

Если это не помогло, отправьте свои коды ошибок.

0 голосов
/ 27 сентября 2011

Для доступа к выбранному пункту раскрывающегося списка; вам нужно будет разыграть его так, как вы хотите:

var theDog : Dog;
theDog = dogSelected.selectedItem as Dog

Поле метки не имеет ничего общего с доступом к выбранному элементу. LabelField просто используется по умолчанию itemRenderer, чтобы решить, какое значение отображать в раскрывающемся списке. Если вы не видите текст, отображаемый в раскрывающемся списке; или видя [объект объекта] или что-то подобное, то вот где в игру вступает labelField.

...