2013-12-26 4 views
0

В Flex, мы можем создать выпадающий с этим:Работа с Flex ComboBox

<s:ComboBox id="mycb" dataProvider="{data}" labelField="name" change="combobox1_changeHandler(event)"/> 

Но, как я могу получить доступ к значению поля со списком? Я пробовал с mycb.textInput.text, но кажется, что это не работает. Если я использую mycb.selectedItem.name, он отправит ошибку, если пользователь вручную напечатает значение, которого нет в списке.

Итак, как я могу получить значение выпадающего списка, которое его значение может быть или не быть в раскрывающемся списке?

спасибо.

ответ

0

Ваша вторая попытка правильная, что «mycb.selectedItem.name». В «обработчике изменений» всегда проверяйте значение null как if (mycb.selectedItem! = Null). Тогда ошибка не появится. Убедитесь, что ваш «labelfield» соответствует переменной в поставщике данных.

+0

Спасибо за ваш ответ. Если оно равно null, то как я могу получить значение? – user1995781

+0

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

0

Посмотрите на example in the documentation на номер ComboBox. Обратите внимание, как они используют labelToItemFunction для обработки случая, когда пользователь вводит что-то, чего нет в dataProvider.

Вы можете использовать эту функцию для возврата объекта, у которого есть пользовательское значение. Затем пусть ваш существующий обработчик изменений обрабатывает пользовательское значение так же, как и те, что содержатся в dataProvider.

<!-- Function to handle custom input strings -->       
private function myLabelToItemFunction(input:String):* 
{ 
    <!-- Returns object that matches items in dataProvider --> 
    return {ingredient:input, category:"mystery"}; 
}