Flex ComboBox, значение по умолчанию и датапровердеры

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

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

Ответы

Ответ 1

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

Ответ 2

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

У меня есть ComboBox, у которого есть ArrayCollection, содержащий объекты, поскольку он dataprovider. Когда приложение запускается, он использует 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" />

Ответ 3

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

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

Ответ 4

Это можно использовать в следующем коде для выбранного значения по умолчанию для 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}" />