Flex ComboBox, значение по умолчанию и поставщики данных

StackOverflow https://stackoverflow.com/questions/35224

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

У меня есть 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" />

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

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

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

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}" />
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top