【问题标题】:how trigger when data provider of the flex chart changes?当弹性图表的数据提供者发生变化时如何触发?
【发布时间】:2013-12-09 08:44:59
【问题描述】:

是否可以在弹性图表的数据提供者发生变化时触发?有什么想法吗? 我使用了oncreation complete,但是动态更改图表的数据源时它不起作用。

【问题讨论】:

    标签: actionscript-3 apache-flex flex4 flex3 flex4.5


    【解决方案1】:

    试试 Changewatcher 类。

    import mx.binding.utils.ChangeWatcher;
    import mx.events.PropertyChangeEvent;
    
    ChangeWatcher.watch(this, "dataProvider", watchHandler);
    
    private function watchHandler(e:PropertyChangeEvent):void
     {
                        // Do Something
     }
    

    否则试试这个, 将集合更改侦听器添加到图表本身,如下所示。

    chart.addEventListener(CollectionEvent.COLLECTION_CHANGE, onChartDataProviderChange);
    
    private function onChartDataProviderChange(e:CollectionEvent):void
         {
                            // Do Something
         }
    
    if(condition1){
    chart.dataprovider=provider1;
    } 
    if(condition2){
    chart.dataprovider=provider2;
    }
    

    希望对你有帮助。

    【讨论】:

    • 感谢您的回复。这仅在更改整个数据提供者时有效。当相同的 dataProvider 发生变化时,我会触发。
    • 整个数据提供者是什么意思?您需要在上面的代码中将“dataprovider”替换为您的 dataprovider 名称。否则发布与相关部分相对应的代码,以便为您提供准确的解决方案。
    • if(condition1){chart.dataprovider=provider1} if(condition2){chart.dataprovider=provider2} 这正是我所期望的。provider one 和 provider2 的长度不一样。
    • 编辑了我的帖子检查一下。
    【解决方案2】:

    如果dataProviderArrayCollection,您可以将侦听器添加到 dataProvider 对象集合本身:

    dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE,listernerFunction);
    

    请注意,如果您将整个 dataProvider 对象替换为例如代码

    dataProvider  = null;
    dataProvider = new ArrayCollection();
    

    你不会触发事件,你必须为新对象添加一个新的监听器。

    否则,您可以将侦听器添加到图表本身,该侦听器将在每次替换数据提供者对象时触发,但在集合本身更改时不会触发。

    chart.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE,funct);
    [..]
    protected function funct( event:PropertyChangeEvent):void{
        if(event.property=="dataProvider"){
            //Your code
        }
    }
    

    【讨论】:

    • 感谢您的回复。但是我需要在集合本身发生变化时触发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2017-05-21
    相关资源
    最近更新 更多