弹性图表的数据提供者发生变化时如何触发?

时间:2013-12-09 08:45:00

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

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

2 个答案:

答案 0 :(得分:1)

如果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
    }
}

答案 1 :(得分: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;
}

希望它有所帮助。