假设我有一个组合框,我正在使用ActionScript将其数据提供程序从oldDataProvider
切换到newDataProvider
。两个数据提供者都是ArrayCollections。然后,当oldDataProvider
ArrayCollection中发生更改时,它会影响组合框,尽管它不再是其数据提供者。具体来说,从oldDataProvider
中移除项目时(在newDataProvider
值的范围内),它会将组合框的selectedIndex
值减一,从而更改所选项目。
切换这样的数据提供商是一种好习惯吗?我怀疑这是问题的根源。或者只有一个数据提供者并相应调整其值更好?
答案 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;
}
}
}