Flex Chart标签不会更新数据刷新? (PIC)

时间:2009-05-08 19:59:14

标签: flex charts

alt text http://www.mattdell.com/hostedfiles/flexchartissue.bmp

我遇到的问题是,当刷新数据时,我的Flex饼图上的图表标签不会消失。在上图中,左/前图表是默认情况下图表的加载方式。通过从下拉列表中选择另一个项目,图表将更改为右侧/后图表,但“有风险”标签不会消失。另一种选择也是如此,其中“在工作中”不会消失。

有没有其他人发生过这种情况?我找不到任何关于此的信息!

谢谢!

-Matt

3 个答案:

答案 0 :(得分:4)

我遇到了这个问题,我花了一些时间来找出这个bug的解决方法。

要解决这个问题,我设置了PieChart系列,当设置了dataProvider的底层Collection时,以及Collection更改的任何时候:

<?xml version="1.0" encoding="utf-8"?>
<mx:PieChart xmlns:mx="http://www.adobe.com/2006/mxml"
    dataProvider="{dataForPieChart}">
    <mx:Script>
        <![CDATA[
            import mx.events.CollectionEvent;
            import mx.collections.ArrayCollection;
            import mx.charts.series.PieSeries;

            [Bindable]
            private var _dataForPieChart:ArrayCollection;

            public function set dataForPieChart(value:ArrayCollection):void
            {
                _dataForPieChart = value;

                /* Add a Collection Change Event Listener to the Collection. */
                _dataForPieChart.addEventListener(
                    CollectionEvent.COLLECTION_CHANGE, 
                    dataForPieChart_collectionChangeHandler);

                reloadPieSeries();
            }

            public function get dataForPieChart():ArrayCollection
            {
                return _dataForPieChart;
            }

            private function dataForPieChart_collectionChangeHandler(
                event:CollectionEvent):void
            {
                reloadPieSeries();
            }

            private function reloadPieSeries():void
            {
                series = new PieSeries();

                series.field = "myValue";

                series.labelPosition = "callout";
            }
        ]]>
    </mx:Script>
</mx:PieChart>

答案 1 :(得分:1)

在这两种情况下,您的数据是什么样的?我的猜测是你有一个值为0的系列数据,这可能导致标签呈现而饼图上没有任何可见的切片。尝试使用0值过滤掉数据或使用自定义标签功能在字段值为0时不显示标签。

(注意这只是猜测)

答案 2 :(得分:0)

Eric Belair提出的解决方案对我很有用,这是我的函数中的代码,它更新了infoPA中的数据,这是PCgrafico PieChart的dataProvider。我希望如果有人也遇到这种情况会有所帮助

infoPA=evt.result.data.infoPA.estado;

PCgrafico.series=null;
var vectorSeries:Array=new Array();

var series:PieSeries=new PieSeries();
series.field="totalPA";            
series.nameField="estadoPA";
series.setStyle("labelPosition", "callout");
series.setStyle("showDataEffect", effect);
vectorSeries.push(series);
PCgrafico.series=vectorSeries;