将动态值传递给xml文件-flex融合图表

时间:2011-03-18 09:57:25

标签: xml flex fusioncharts

<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx"
                  xmlns:components="com.fusionwidgets.components.*">

    <components:FusionWidgets FCChartType="AngularGauge" FCDataURL="data/energyMtd.xml"/>
</s:BorderContainer>

和energyMtd.xml文件为

<?xml version="1.0" encoding="UTF-8"?>
<chart decimals="2"  palette="2" autoScale="1" paletteThemeColor="BDBDBD" showBorder="0" basefontColor="000000" 
    toolTipBgColor="BFBFBF" gaugeFillMix="{dark-10},{light-70},{dark-10}" gaugeFillRatio="3" 
    pivotRadius="6" gaugeInnerRadius="60%" tickValueDistance="10" showTickValues="1" tickValueStep="2" 
    placeTicksInside="0" placeValuesInside="0" showToolTip="1" baseFontSize="9" adjustTM="0" 
    pivotFillColor="000000" dataStreamURL="" gaugeStartAngle="225" gaugeEndAngle="-45" 
    gaugeOriginX="100" gaugeOriginY="98" gaugeOuterRadius="75" numberSuffix="kW" upperLimit="100" 

lowerLimit="0">

  <colorRange>
    <color minValue="0" maxValue="100" code="bbbaba"/>
  </colorRange>

  <dials>
    <dial value="0" rearExtension="10" baseWidth="10" bgColor="000000"/>
  </dials>

</chart>  

如何从flex侧动态传递colorRange中的upperLimit =“”,dial value =“”和maxValue =“”值。我需要在角度计融合图上绘制这3个值

3 个答案:

答案 0 :(得分:1)

我认为它应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx"
                  xmlns:components="com.fusionwidgets.components.*"
                  creationComplete="init();">

    <fx:Script>
        <![CDATA[
        import flash.events.Event;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import mx.collections.ArrayCollection;

        protected var xmlLoader:URLLoader;
        [Bindable]
        protected var xml:XML;

        /**
         * 
         */
        protected function init():void
        {
            xmlLoader = new URLLoader();
            xmlLoader.addEventListener(Event.COMPLETE, parse);
            xmlLoader.load(new URLRequest("data.xml"));
        };

        /**
         * 
         * @param   event
         */
        protected function parse(event:Event):void
        {
            xml = event.target.data;
            xml.ignoreWhitespace = true;
            xml.ignoreComments = true;

            xml.chart.@upperLimit = 100;
            xml.chart.dials.dial.@value = 0;
            xml.chart.colorRange.color.@maxValue = 100;

            fw.dataProvider = new ArrayCollection(xml);
        };
        ]]>
    </fx:Script>

    <components:FusionWidgets id="fw" FCChartType="AngularGauge" />
</s:BorderContainer>

我认为您应该检查组件的文档,以获取有关它如何处理数据提供程序的更多详细信息。

祝你好运, 罗布

////////////////////////////////////

您好,

将XML文件加载到XML对象后,可以设置属性'和元素'值。

例如:

xml.chart.@upperLimit = 100;
xml.chart.dials.dial.@value = 0;
xml.chart.colorRange.color.@maxValue = 100;

我希望这就是你需要的, 罗布

答案 1 :(得分:1)

似乎您需要稍微更改一下代码。

fw.FCDataXML = xml.toString(); fw.FCRender();

答案 2 :(得分:1)

Angular gauge仅接受XML数据。它不接受ArrayCollection。

请在传递之前检查是否要将XML转换为String。

您还可以启用Gauge的调试模式以查看问题的更多详细信息