Динамическое изменение значения Fusion Chart с помощью события Slider в flex - PullRequest
1 голос
/ 04 июня 2010

У меня есть набор ползунка для каждого столбца на графике. Я связал все ползунки с соответствующими полосами. Когда я изменяю значение ползунка, значение в ArrayCollection изменяется, и я также использовал

singleData.refresh ();

но значения на графике остаются без изменений. Как я могу обновить значения на графике с изменением значений ползунка.

Вот мой код:

<mx:Script>
    <![CDATA[
        import mx.events.SliderEvent;
        import mx.collections.ArrayCollection;

        [Bindable]
        private var singleData:ArrayCollection=new ArrayCollection([
               {label:'Diego', value:'22'},
               {label:'Steve', value:'20'},
        ]);

        private function updateChart(event:SliderEvent, index:Number):void{
            singleData.getItemAt(index).value = String(event.value);
            singleData.refresh();
        } 
    ]]>
</mx:Script>


<ns1:FusionCharts x="10" y="10" FCChartType="Column3D" width="500">  
    <ns1:FCChartData  FCParams="{chartParam}" FCData="{singleData}" />
</ns1:FusionCharts>

<mx:VBox x="10" y="318">
    <mx:HBox>
        <mx:Label text="Diego:" width="100"/>
        <mx:HSlider id="SliderDiego" change="{updateChart(event,0)}" liveDragging="true" value="{singleData.getItemAt(0).value}" minimum="0" maximum="100" width="120"/>                    
    </mx:HBox>
    <mx:HBox>
        <mx:Label text="Steve:" width="100"/>
        <mx:HSlider id="SliderSteve" change="{updateChart(event,1)}" liveDragging="true" value="{singleData.getItemAt(1).value}" minimum="0" maximum="100" width="120"/>                    
    </mx:HBox>
</mx:VBox>

1 Ответ

1 голос
/ 24 мая 2011

Графики не сохраняют привязку после рендеринга. В функции обновления графика снова установите новые данные и визуализируйте график. Перед этим также установите идентификатор для диаграммы.

<ns1:FusionCharts id="FC1" x="10" y="10" FCChartType="Column3D" width="500">  

Теперь в скрипте сделайте это:

private function updateChart(event:SliderEvent, index:Number):void{
        singleData.getItemAt(index).value = String(event.value);
        singleData.refresh();
        FC1.FCData(singleData);
        FC1.FCParams(chartparam);
        FC1.FCRender(); 
} 

Ссылка от: http://www.fusioncharts.com/flex/docs/charts/Contents/case_changeData.html

...