在数据提供者之间切换(Flex 2.0)

时间:2009-06-05 19:37:12

标签: flex

假设我有一个组合框,我正在使用ActionScript将其数据提供程序从oldDataProvider切换到newDataProvider。两个数据提供者都是ArrayCollections。然后,当oldDataProvider ArrayCollection中发生更改时,它会影响组合框,尽管它不再是其数据提供者。具体来说,从oldDataProvider中移除项目时(在newDataProvider值的范围内),它会将组合框的selectedIndex值减一,从而更改所选项目。

切换这样的数据提供商是一种好习惯吗?我怀疑这是问题的根源。或者只有一个数据提供者并相应调整其值更好?

1 个答案:

答案 0 :(得分:2)

实际上它是ComboBox组件的一个错误,它仍然存在于Flex 3中。您应该将其存档到Adobe错误跟踪数据库。 这是一个扩展的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;
    }

}
}