2009-10-15 5 views
1

Je travaille dans l'application Air dans Flex3, j'ai besoin de savoir comment définir la propriété "selectedItem" quand nous avons 2 valeurs comme la propriété label (data et label) pour la sélection combobox, valeur de données pour notre entrée.ComboBox selectedItem dans Flex3

Comme indiqué ci-dessous.

Dans (selectedItem = "{stylename}") stylename aura la propriété "données" valeur mais je dois établir que "lable" comme valeur sélectionnée dans combobox.

Comme si le nom de style est "coché", l'élément sélectionné de la zone de liste déroulante doit être "coché".

Comment implémenter dans flex ....

Merci à l'avance

+0

@vineth, je compris la question bien - peut-être que l'anglais n'est pas votre langue maternelle - et j'espère que vous trouverez ma réponse utile. –

Répondre

2

ComboBox.selectedItem est à la recherche d'un Object. Vous lui passez un String littéral. Où est défini "stylename"? Si cela provient d'une source externe, vous pouvez récupérer l'élément à sélectionner dans une fonction setter:

ActionScript 3:

[Bindable] 
public var comboBoxData:ArrayCollection; 

[Bindable] 
private var comboBoxSelectedItem:Object = {}; 

private var _styleName; 

private function get styleName():String 
{ 
    return _styleName; 
} 

private function set styleName(value:String):void 
{ 
    _styleName = value; 

    comboBoxSelectedItem = getItemFromCollection("styleName", value); 
} 

private function getItemFromCollection(property:String, value:String):Object 
{ 
    // Create a copy of the Collection used as the dataProvider for the ComboBox 
    var filteredCollection:ArrayCollection = 
     new ArrayCollection(comboBoxData.toArray()); 

    // Set a filterFunction to filter only those Objects with the specified name/value pair 
    filteredCollection.filterFunction = 
     function(item:Object):Boolean 
     { 
      return item[property] == value; 
     } 

    // Refresh the collection to apply the filterFunction 
    filteredCollection.refresh(); 

    // Return an empty Object if no Object was found with the given name/value pair 
    if (filteredCollection.length == 0) 
     return {}; 

    // Return the first/only Object in the filtered Collection 
    return filteredCollection.getItemAt(0); 
} 

MXML:

<mx:ComboBox dataProvider="{comboBoxData}" selectedItem="{comboBoxSelectedItem}" /> 
+0

Merci Mr.Eric, je vais essayer cette méthode Bindable, puisque j'ai fait comme une méthode pour selectedItem de retuner une valeur d'étiquette que vous avez mis en évidence ci-dessus .. – vineth

+0

Génial, heureux d'aider! –