2011-01-26 5 views
6

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

У меня есть выпадающий так:

<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, они будут отправлены в соответствующую часть сайта (без выбора Label 2 в comboBox). Как установить comboBox программно, чтобы он соответствовал тому, на что он смотрит?

В инструкции switch моей функции я хочу установить comboBox на метку, соответствующую представлению. Если «view = 2», то comboBox должен показать «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

ответ

8

Вы не хотите, чтобы изменить объект в 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 найти фактический элемент на основе значения/URL случае. Что-то вроде этого:

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

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

+0

Привет, Flextras.com, чем вы за помощью. Я пошел с вариантом 2, и он отлично поработал. Благодаря! – Laxmidi

+0

@ Laxmidi Рад помочь. Не забудьте принять это как правильный ответ. – JeffryHouser

+0

+1 Потому что я не могу принять ответ :) – zawhtut

Смежные вопросы