2009-06-05 20 views
0

Angenommen, ich habe ein Kombinationsfeld und ich wechsle seinen Datenanbieter von oldDataProvider zu newDataProvider mit ActionScript. Beide Datenanbieter sind ArrayCollections. Wenn eine Änderung in der ArrayCollection oldDataProvider eintritt, wirkt sich das auf das Kombinationsfeld aus, obwohl es nicht mehr sein Datenprovider ist. Beim Entfernen eines Elements aus oldDataProvider (im Bereich der Werte newDataProvider) wird der Wert des Kombinationsfelds um eins verringert und das ausgewählte Element geändert.Wechseln zwischen Datenprovidern (Flex 2.0)

Ist es eine gute Praxis, Datenanbieter so zu wechseln? Ich vermute, das ist die Wurzel des Problems. Oder ist es besser, nur einen Datenanbieter zu haben und seine Werte entsprechend anzupassen?

Antwort

2

Eigentlich ist es ein Fehler der ComboBox-Komponente und es existiert immer noch in Flex 3. Sie sollten es in Adobe Bug Tracking-Datenbank ablegen. Hier ist eine erweiterte ComboBox-Klasse, die das Problem lösen soll:

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

Jetzt funktioniert es, wie es sollte, vielen Dank. Ich habe es auch als Fehler gemeldet. – atas

Verwandte Themen