2009-06-05 71 views
0

假設我有一個組合框,並且正在使用ActionScript將其數據提供者從oldDataProvider切換爲newDataProvider。這兩個數據提供者都是ArrayCollections。然後,當ArrayCollection發生更改時,它會影響組合框,儘管它不再是其數據提供者。具體而言,從oldDataProvider(在newDataProvider值的範圍內)中刪除項目時,它會將組合框的selectedIndex值減1,並更改所選項目。在數據提供者之間切換(Flex 2.0)

像這樣切換數據提供者是否是一種很好的做法?我懷疑這是問題的根源。還是隻有一個數據提供者並相應地調整其值?

回答

2

實際上它是ComboBox組件的一個bug,它仍然存在於Flex 3中。您應該將它提交給Adobe bug跟蹤數據庫。 這裏是一個要解決的問題擴展ComboBox類:

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

現在,它的作品,因爲它應該,非常感謝。我也將它報告爲bug。 – atas 2009-06-06 09:01:13