2008-08-29 7 views
14

У меня есть ComboBox Flex, который получает заселена DataProvider все хорошо ...Flex ComboBox, значение по умолчанию и dataproviders

Теперь я хотел бы добавить по умолчанию «- выбрать пункт -» вариант в индекс 0, как я могу это сделать и все еще использовать dataprovider? Я не видел таких примеров, но я не могу представить, что это трудно ...

ответ

35

Если вам не нужен элемент по умолчанию, который можно выбрать, вы можете использовать свойство promptComboBox и установить selectedIndex на -1. Это покажет строку, которую вы установили propmt, в качестве выбранного значения, пока пользователь не выберет другого. Однако он не будет отображаться в списке опций.

+3

это все еще работает для Spark DropDownList - спасибо – danjp 2011-04-27 11:58:08

1

Как я уже говорил в прошлом, это создать новую коллекцию, которая будет служить поставщиком данных для combobox, а затем я слушаю изменения исходного источника (используя mx.BindingUtils.ChangeWatcher). Когда я получаю такое уведомление, я воссоздаю свой пользовательский поставщик данных.

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

4

Сегодня я столкнулся с этой проблемой и хотел поделиться своим решением.

У меня есть ComboBox, у которого есть ArrayCollection, содержащий Объекты, поскольку это датаподаватель. Когда приложение запускается, он использует RemoteObject для выхода и получения ArrayCollection/Objects. В моей обработчик событий для этого вызова я просто его добавить еще один объект к началу ArrayCollection и выберите его:

var defaultOption:Object = {MyLabelField: "Select One"}; 
myDataProvider.addItemAt(defaultOption, 0); 
myComboBox.selectedIndex = 0; 

Это то, что мой ComboBox выглядит для справки:

<mx:ComboBox id="myComboBox" dataProvider="{myDataProvider}" labelField="MyLabelField" /> 
0

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

var index:String = "foo"; 
for(var objIndex:int = 0; objIndex < comboBox.dataProvider.length; objIndex++) { 
    if(comboBox.dataProvider[objIndex].label == index) 
    { 
    comboBox.selectedIndex = objIndex; 
    break; 
    } 
} 
<mx:ComboBox id="comboBox" dataProvider="{_pageIndexArray}" /> 
Смежные вопросы