Flex - функция ComboBox label не обновляется с обновлением коллекции ArrayCollection - PullRequest
0 голосов
/ 11 августа 2010

У меня есть две проблемы с моим ComboBox.

Моя первая проблема заключается в том, что когда моя ArrayCollection имеет только один элемент, по какой-то причине я не могу выбрать этот первый элемент.Функция изменения, заданная в mxml, никогда не вызывается, когда я пытаюсь выбрать этот элемент.Если я установлю подсказку, она работает.Я знаю, что элемент еще не выбран, потому что при отладке выбранный элемент показывает ноль.Я не хочу использовать подсказку.Я хочу, чтобы первый элемент в коллекции ArrayCollection выбирался автоматически.Поэтому, если есть только один элемент, я хочу, чтобы выбранный элемент был таким.К вашему сведению - я использую функцию labelFunction для форматирования данных в коллекции Array.Любая идея, почему я не могу выбрать первый элемент или установить первый элемент в ArrayCollection, чтобы быть выбранным элементом?

Моя большая проблема состоит в том, что, когда моя коллекция Array обновляется, моя функция метки не должна обновляться, потому чтоСначала я открываю выпадающий список, в котором есть конкретные данные.Когда коллекция массивов обновляется, и я снова открываю раскрывающийся список, я вижу старые данные в раскрывающемся списке, но их больше не существует.

Итак, допустим, у меня есть ComboBox, у которого есть источник данных массиваколлекция одного кода штата и его названия штата.Это функция labelFunction, которая ставит черту между кодом состояния и именем состояния.Их нет, поэтому ComboBox будет выглядеть как GA - Georgia, и когда вы откроете выпадающий список, это будет все, что есть.Я хочу, чтобы этот пункт был выбран автоматически.Любая идея, почему старые данные отображаются при открытии раскрывающегося списка после обновления коллекции массивов новыми данными?

<mx:ComboBox labelFunction="getFormattedNpaNxxCollectionList()" 
     dataProvider="arrayColl" change="doSomething()"/>

public function getFormattedNpaNxxCollectionList(item:Object):String
{
  return StringUtil.substitute("{0} - {1}", item.stateCode, item.stateName);
}

1 Ответ

1 голос
/ 11 августа 2010

Является ли arrayColl объявленным как [Bindable] - обновления не будут отражаться автоматически, если его нельзя привязать.Разместите код, в котором вы обновляете коллекцию.

Чтобы выбрать первый элемент, если после обновления коллекции массивов есть только один элемент, вы можете позвонить

if(arrayColl.length == 1)
  cb.selectedIndex = 0;

после обновления.

Если вы обновляете только значения в коллекции (и не переназначаете весь новый объект коллекции массива на arrayColl), это можно сделать из обработчика событий collectionChange массиваколлекция.В противном случае вы должны сделать это после назначения нового объекта коллекции переменной arrayColl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...