Flex ComboBox, значение по умолчанию и поставщики данных
-
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}" />