Actionscript 3 flex图表的数据提供程序更改时如何触发?
flex图表的数据提供程序更改时是否可能触发?有什么想法吗,伙计们?Actionscript 3 flex图表的数据提供程序更改时如何触发?,actionscript-3,apache-flex,flex4,flex3,flex4.5,Actionscript 3,Apache Flex,Flex4,Flex3,Flex4.5,flex图表的数据提供程序更改时是否可能触发?有什么想法吗,伙计们? 我使用了oncreation complete,但动态更改图表的数据源时它不起作用。如果dataProvider是ArrayCollection您可以将侦听器添加到dataProvider对象集合本身: dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE,listernerFunction); 请注意,例如,如果将整个数据提供程序对象替换为代码 da
我使用了oncreation complete,但动态更改图表的数据源时它不起作用。如果
dataProvider
是ArrayCollection
您可以将侦听器添加到dataProvider对象集合本身:
dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE,listernerFunction);
请注意,例如,如果将整个数据提供程序对象替换为代码
dataProvider = null;
dataProvider = new ArrayCollection();
您将不会触发该事件,并且必须向新对象添加一个新的侦听器
否则,您可以将侦听器添加到图表本身,该图表将在每次替换数据提供程序对象时触发,但在集合本身更改时不会触发
chart.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE,funct);
[..]
protected function funct( event:PropertyChangeEvent):void{
if(event.property=="dataProvider"){
//Your code
}
}
尝试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名称。如果(条件1){chart.dataprovider=provider1}如果(条件2){chart.dataprovider=provider2}这正是我所期望的。provider1和provider2的长度不一样。编辑我的帖子检查一下。