Flex: программная установка выбранного элемента в поле со списком - PullRequest
6 голосов
/ 26 января 2011

Мне нужна помощь, чтобы программно настроить выбранный элемент в выпадающем списке.

У меня есть такой комбинированный список:

<mx:ComboBox  id="MyComboBox" change="puzzleHandler(event);"   prompt="Make a Selection">
    <mx:ArrayCollection id="myDP">
        <mx:Object  id="first" label="Label 1" series="2"  pageTitle="Title 1"/>
        <mx:Object  id="second" label="Label 2" series="7" pageTitle="Title 2"/>                                        
        <mx:Object  id="third" label="Label 3" series="9"  pageTitle="Title 3"/>                                        
    </mx:ArrayCollection>
</mx:ComboBox>

У меня есть функция, связанная с глубокими ссылками. Если кто-то введет URL-адрес: www.mysite.com/#view=2, он будет перенаправлен на соответствующую часть сайта (без указания метки 2 в поле со списком). Как настроить comboBox программно, чтобы он соответствовал тому, на что пользователь смотрит?

В операторе switch моей функции я хочу установить для comboBox метку, соответствующую представлению. Если «view = 2», то в поле со списком должно отображаться «Label 2» как выбранный.

    case "view=1":
        MyComboBox.selectedItem.label="Label 1";
        parseUrl();

    case "view=2":
        MyComboBox.selectedItem.label="Label 2";
        parseUrl();

    case "view=3":
        MyComboBox.selectedItem.label="Label 3";
        parseUrl();

Я попробовал это: MyComboBox.selectedItem.label = "Метка 1", но это не работает. Какие-либо предложения?

Спасибо.

-Laxmidi

1 Ответ

8 голосов
/ 26 января 2011

Вы не хотите изменять объект selectedItem;Вы хотите изменить selectedItem или selectedIndex.Попробуйте это:

case "view=1":
    MyComboBox.selectedIndex=0;
    parseUrl();

case "view=2":
    MyComboBox.selectedIndex=1;
    parseUrl();

case "view=3":
    MyComboBox.selectedIndex=2;
    parseUrl();

Если вы хотите установить selectedItem вместо selectedIndex, вам придется перебрать dataProvider, чтобы найти фактический элемент на основе значения case / URL.Примерно так:

for each(var tempObject : Object in myList.dataProvider){
  if(tempObject.label == urlValue){
    MyComboBox.selectedItem = tempObject;
    break;
 }
}

Второй подход более гибкий в долгосрочной перспективе.

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