2013-12-09 2 views
0

Можно ли вызвать, когда изменяется поставщик данных гибкой диаграммы? Любые идеи парней? Я использовал oncreation полный, но он не работает, когда динамически меняет источник данных диаграммы.как триггер, когда изменяется поставщик данных гибкой диаграммы?

ответ

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; 
} 

Надеюсь, это поможет.

+1

Спасибо за ваш ответ. Это работает только при изменении поставщика данных. им привязка для запуска, когда изменяется тот же самый файл. –

+0

что вы имеете в виду в целом dataprovider? вам нужно заменить «dataprovider» на имя вашего датапортера в приведенном выше коде. Else опубликуйте свой код, соответствующий этой части, чтобы дать вам точное решение. –

+1

if (condition1) {chart.dataprovider = provider1} if (condition2) {chart.dataprovider = provider2} это именно то, что я ожидал.length провайдера один и provider2 не тот же. –

1

Если dataProvider является ArrayCollection вы можете добавить слушателя к самой коллекции объектов 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 
    } 
} 
+0

спасибо за ваш ответ. Но мне нужно вызвать, когда сама коллекция изменится. –