2009-06-05 9 views
0

Supposons que je dispose d'une zone de liste modifiable et que je mette son fournisseur de données de oldDataProvider à newDataProvider avec ActionScript. Les deux fournisseurs de données sont ArrayCollections. Ensuite, lorsqu'une modification se produit dans la ArrayCollection oldDataProvider, elle affecte la zone de liste déroulante, bien que ce ne soit plus son fournisseur de données. Plus précisément, lors de la suppression d'un élément de oldDataProvider (dans la plage des valeurs newDataProvider), il diminue la valeur selectedIndex de la zone de liste déroulante par un, en modifiant l'élément sélectionné.Basculer entre les fournisseurs de données (Flex 2.0)

Est-ce une bonne pratique de changer de fournisseur de données comme ça? Je soupçonne que c'est la racine du problème. Ou est-il préférable d'avoir un seul fournisseur de données et d'ajuster ses valeurs en conséquence?

Répondre

2

En fait, il s'agit d'un bug du composant ComboBox et il existe toujours dans Flex 3. Vous devez le déposer dans la base de données de suivi des bogues d'Adobe. Voici une classe ComboBox étendue qui devrait résoudre le problème:

package test 
{ 
import mx.controls.ComboBox; 
import mx.events.CollectionEvent; 

public class FixedComboBox extends ComboBox 
{ 
    public function FixedComboBox() 
    { 
     super(); 
    } 

    override public function set dataProvider(value:Object):void 
    { 
     if (collection) 
      collection.removeEventListener(CollectionEvent.COLLECTION_CHANGE, collectionChangeHandler); 
     super.dataProvider = value; 
    } 

} 
} 
+0

Maintenant, il fonctionne comme il se doit, merci beaucoup. Je l'ai signalé comme bug aussi. – atas

Questions connexes