J'ai un projet qui a été compilé avec le SDK Flex 3.2. Un de mes composants est un combobox, qui est lié à une propriété (appelée produits) dans le modèle Cairngorm. Si j'insère une nouvelle valeur dans model.products, la liste déroulante affiche immédiatement la nouvelle valeur. Fonctionne parfaitement. J'ai ensuite déplacé vers le SDK 3.5, et l'exécution de l'opération identique provoque un problème. Même si le modèle a été mis à jour (j'ai vérifié que c'est vraiment le cas), la combobox n'affiche pas la nouvelle valeur correctement - il semble savoir qu'il y a un nouvel item parce qu'il y a une nouvelle ligne dans le combo, mais la nouvelle ligne est vide et non sélectionnable. Les éléments existants dans le combo sont là et sélectionnables (comme ils devraient l'être). Si je réinitialise le formulaire (c'est-à-dire ferme et rouvre la TitleWindow sur laquelle se trouve le combo), toutes les valeurs correctes (y compris la nouvelle) sont affichées dans le combo.Adobe Flex Combobox DataProvider
J'ai fait un va-et-vient plusieurs fois entre 3.2 et 3.5 pour vérifier que c'est effectivement la cause.
Toute idée sur la façon de contourner ce problème serait grandement appréciée.
Le fournisseur de données pour le combo a été défini sur un modèle lisible (Cairngorm). Ainsi, la mise à jour du modèle dans le résultat de la commande a automatiquement passé à la combobox. Eh bien, il l'habitude de toute façon. Après avoir testé un peu plus, il semble que je dois réinitialiser le fournisseur de données: cb_products.dataProvider = model.products; Qui craint un peu. – JonoB
En fait, ce qui précède ne fonctionne pas. Il semble que cb_products.dropdown.dataProvider = model.products fait cependant. Ce qui suce encore. – JonoB
Vous remplacez le fournisseur de données par ce code. Il doit y avoir un bug de frange ajouté à la ComboBox quelque part entre 3.2 et 3.5. Vous pouvez probablement étendre la zone de liste déroulante et remplacer la méthode set dataProvider pour effectuer cette mise à jour en interne afin que vous n'ayez pas à le faire manuellement. – JeffryHouser