2012-12-06 3 views
1

J'ai une application qui contient 2 objets: A List et ComboBox. Dans le List j'ai un ensemble d'articles. Quand l'un des éléments est cliqué, je veux que les éléments ComboBox's changent. J'ai ce code jusqu'ici mais je ne peux pas savoir où aller d'ici. J'ai des services de données par Cold Fusion qui sont également définis dans le projet. J'ai une liste de magasins, Dodge Toyota Hyundai Mazda Nissan Jacksonville qui peuplent le List. Il y a plusieurs centaines Names dans les données ComboBox qui doivent être filtrées lorsqu'un utilisateur choisit un magasin. Par exemple, si je choisis le magasin Dodge, je souhaite que la zone de liste déroulante soit remplie avec uniquement les utilisateurs dont la propriété de magasin est Dodge. Comment je fais ça? J'espère que tout cela a du sens :)Liaison de données dans Adobe Flash Builder

Répondre

0

Essayez de changer le fournisseur de données pour combobox comme

protected function list_changeHandler(event:IndexChangeEvent):void 
    { 
     if(list.selectedItem.stores == "Dodge") 
     { 
      comboBox.dataProvider=array; 
      //or 
      comboBox.dataProvider=xmlList; 
     } 
    } 
+0

Cela fonctionne très bien. Merci! –

1

Je peux penser à deux façons d'aborder cette situation. La direction que vous prenez dépend de votre cas d'utilisation (dont je connais trop peu).

Load'm tous et filter'm

Vous faites une grande liste de tous les éléments qui pourraient apparaître dans la zone de liste déroulante. Vous vous assurez que ces éléments ont une propriété parentId. Vous pouvez ensuite utiliser cette propriété pour filtrer les éléments lorsque l'utilisateur sélectionne un élément de la liste.

private var comboboxItems:ArrayCollection; 

override public function initialize():void { 
    super.initialize(); 

    myService.getAllComboboxItems(setComboboxItems); 
} 

private function setComboboxItems(event:ResultEvent):void { 
    combobox.dataprovider = comboboxItems = event.result as ArrayCollection; 
    comboboxItems.filterFunction = isParentSelected; 
} 

private function isParentSelected(item:ComboboxItem):Boolean { 
    return item.parentId = list.selectedItem.id; 
} 

protected function list_changeHandler(event:IndexChangeEvent):void { 
    if (list.selectedItem.stores == "Dodge") { 
     comboboxItems.refresh(); 
    } 
} 

Note: ceci est juste le code que je vous écris du haut de ma tête, donc il ne fonctionnera probablement pas hors de la boîte, mais il donne l'idée.

Load'm lorsque vous need'm

Chaque fois qu'un élément est sélectionné dans la liste, faire un appel de service pour obtenir les éléments ComboBox correspondants et définissez le fournisseur de données avec le résultat entrant.

protected function list_changeHandler(event:IndexChangeEvent):void { 
    if (list.selectedItem.stores == "Dodge") { 
     service.getComboBoxItemsByParentId(list.selectedItem.id, setComboboxItems); 
    } 
} 

private function setComboboxItems(event:ResultEvent):void { 
    combobox.dataprovider = event.result as ArrayCollection; 
} 
Questions connexes