2010-09-22 3 views
1

Mon but est de créer une fonction générique qui sélectionne une valeur dans une liste déroulante en fonction d'une valeur. (Mon comoBox détient ArrayCollection comme dataProvider.)flex select value from Combo

La difficulté est enfait pour obtenir un propertyname en mode d'exécution

public function selectComboByLabel(combo:ComboBox , propetryName:String, value:String):void { 
    var dp:ArrayCollection = combo.dataProvider as ArrayCollection; 
    for (var i:int=0;i<dp.length;i++) { 
     if (dp.getItemAt(i).propertyName==value) { 
      combo.selectedIndex = i; 
      return; 
     } 
    } 
} 

la ligne if (dp.getItemAt (i) .propertyName valeur ==) est bien sûr incorrect. Il devrait être quelque chose comme: dp.getItemAt (i) .getPropertyByName (propertyName)

Des indices sur la façon de procéder?

Répondre

2

N'utilisez pas la notation de propriété d'objet. Pour ce faire:

dp.getItemAt(i)[propertyName] 
2

En plus de ce que dit Flextras, vous pouvez aussi refaire votre boucle for pour le rendre plus facile à lire:

for each(var item:Object in dp) { 
     if(item[propertyName] == value) { 
      combo.selectedItem = item; 
      return; 
     } 
    } 
Questions connexes