2011-01-26 6 views
6

Necesito ayuda para establecer programáticamente el elemento seleccionado en un cuadro combinado.Flex: Configuración del elemento elegido de forma automática en un ComboBox

Tengo un cuadro combinado de la siguiente manera:

<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> 

Tengo una función que respecta a los enlaces profundos. Si alguien ingresa la url: www.mysite.com/#view=2, será llevado a la parte apropiada del sitio (sin haber seleccionado la Etiqueta 2 en el comboBox). ¿Cómo configuro el comboBox programáticamente para que se corresponda con lo que el usuario está mirando?

En la declaración de cambio de mi función, quiero configurar el comboBox en la etiqueta que corresponde con la vista. Si "view = 2", el comboBox debería mostrar "Label 2" como está seleccionado.

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(); 

yo probamos este: MyComboBox.selectedItem.label = "Etiqueta 1" Pero no está funcionando. ¿Alguna sugerencia?

Gracias.

-Laxmidi

Respuesta

8

Usted no desea cambiar el objeto de la selectedItem; desea cambiar el elemento seleccionado o el índice seleccionado. Prueba esto:

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

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

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

SI desea establecer la selectedItem en lugar de la selectedIndex que tendrá que bucle sobre dataProvider para encontrar el artículo, basado en el valor/URL caso. Algo como esto:

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

El segundo enfoque es más flexible a largo plazo.

+0

Hola, Flextras.com, que tú por la ayuda. Fui con la opción 2 y funcionó muy bien. ¡Gracias! – Laxmidi

+0

@Laxmidi Me alegra ayudar. No olvides aceptar esto como la respuesta correcta. – JeffryHouser

+0

+1 Porque no puedo aceptar la respuesta :) – zawhtut

Cuestiones relacionadas