2010-06-16 4 views
1

J'ai un dictionnaire que je voudrais lier en tant que dataProvider pour un mx: ComboBox. par exemple, lorsque je fais cela:flex Dictionnaire dataProvider?

 mydict[somenewkey]= somenewval; 

Je souhaite que la liste déroulante mette à jour son contenu.

Le problème est que le dictionnaire ne semble pas être lisible. Si j'utilisais un tableau, j'utiliserais ArrayCollection. Mais il ne semble pas y avoir de DictionaryCollection ou HashCollection correspondant. Que faire?

+0

Dans quel format pensez-vous qu'un ComboBox affichera les données dans votre dictionnaire? Je comprends que vous voulez des paires clé-valeur, mais ce n'est pas ce que la boîte combo attend. Il veut quelque chose comme une liste qui est soit un ICollectionView ou quelque chose peut être converti en un comme Array ou XMLList. Peut-être une meilleure question à poser est, pourquoi avez-vous besoin de paires de clé-valeur? En avez-vous besoin ailleurs, et peut-être souhaitez-vous optimiser en conservant toutes les données au même endroit? Ou est-il d'une importance vitale pour une raison quelconque que ComboBox fait référence aux paires d'une manière ou d'une autre? – joshtynjala

Répondre

1

Un dictionnaire n'est pas l'objet approprié pour un fournisseur de données d'une liste classe basée. Je suppose que vos problèmes d'affichage n'ont rien à voir avec la liaison de données, mais plutôt d'autres problèmes, comme un dictionnaire n'a pas de propriété de longueur.

Je suppose que le ComboBox traitera votre dictionnaire comme un objet unique, pas comme une collection de plusieurs objets.

+0

Quel serait un objet approprié à utiliser? – paleozogt

+0

Je recommande fortement d'utiliser une classe de collection, bien que vous puissiez également utiliser des tableaux, XMLList ou tout simplement du XML. – JeffryHouser

+0

Le problème est que ces collections n'ont pas de sémantique key => value. – paleozogt

0

Ce que vous recherchez n'est pas simplement une combinaison des méthodes setItemAt et getItemIndex de ArrayCollection?

_myAC.setItemAt(somenewval, _myAC.getItemIndex(somenewkey)); 
Questions connexes