【问题标题】:Switching between data providers (Flex 2.0)在数据提供者之间切换 (Flex 2.0)
【发布时间】:2009-06-05 19:37:12
【问题描述】:

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

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

【问题讨论】:

    标签: apache-flex


    【解决方案1】:

    其实这是ComboBox组件的一个bug,在Flex 3中仍然存在。你应该把它归档到Adobe bug tracking database。 这是一个可以解决问题的扩展 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;
        }
    
    }
    }
    

    【讨论】:

    • 现在它可以正常工作了,非常感谢。我也将其报告为错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 2021-12-04
    • 1970-01-01
    • 2011-07-27
    • 2010-09-07
    • 2011-02-18
    相关资源
    最近更新 更多