Flex ComboBox, значение по умолчанию и поставщики данных - PullRequest
14 голосов
/ 30 августа 2008

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

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

Ответы [ 4 ]

35 голосов
/ 30 августа 2008

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

4 голосов
/ 10 июня 2009

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

У меня есть 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" />
1 голос
/ 30 августа 2008

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

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

0 голосов
/ 26 сентября 2013

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