0

Webサービスを呼び出してそこからxmlファイルに値を渡して融合チャートxmlを更新したいflexプロジェクトがあります私のコードは

<fx:Script>
    <![CDATA[
        import mx.controls.Alert;
        import mx.events.FlexEvent;
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;
        public var PUENumber:String;
        protected var xmlLoader:URLLoader;
        [Bindable]
        public var avgPUEXml:XML = new XML;

        protected function init():void
        {
            xmlLoader = new URLLoader();
            xmlLoader.addEventListener(Event.COMPLETE,setDataXML)
            xmlLoader.load(new URLRequest("data/AvgPUE.xml")); //Loading xml file for the chart from the folder
        };

        protected function setDataXML(event:Event):void
        {
            avgPUEXml = XML(event.target.data);
            avgPUEXml.value = PUENumber; //updating chart xml value
            fw.FCDataXML = avgPUEXml.toString();
            fw.FCRender(); 
        };

         protected function getDC_POWERdataResult_resultHandler(event:ResultEvent):void
        {
            PUENumber = getDC_POWERdataResult.lastResult; //getting value to update in xml file
            init();
        } 
         protected function bordercontainer1_creationCompleteHandler(event:FlexEvent):void
        {
            getDC_POWERdataResult.token = mGEMWS.getDCPUE("4","715"); //user details to get data from the method
        } 

    ]]>
</fx:Script>

<fx:Declarations>
    <s:CallResponder id="getDC_POWERdataResult" result="getDC_POWERdataResult_resultHandler(event)"/>
    <mgemws:MGEMWS id="mGEMWS" showBusyCursor="true"
                   fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)"/>
</fx:Declarations>

    <ns1:FusionWidgets id="fw" FCChartType="Bulb" FCDataXML="avgPUEXml" />

宣言では、Webサービスを呼び出しています。そしてcreationCompeleteは、Webサービスからデータを取得するためにユーザーIDの詳細を送信しています。ここで、init関数を呼び出して、Webサービスからの値でxmlファイルを更新し、フュージョンウィジェットを表示する必要があります。

4

2 に答える 2

1

チャートの読み込みが完了し、データの準備ができたら、init関数を呼び出すことができます。

これは、ゲージのFCLoadEventまたはFCRenderEventをリッスンして行うことができます。

使用してみてください:

<ns1:FusionWidgets id="fw" FCChartType="Bulb" FCDataXML="avgPUEXml" FCRenderEvent="init()"/>

また

<ns1:FusionWidgets id="fw" FCChartType="Bulb" FCDataXML="avgPUEXml" FCLoadEvent="init()"/>
于 2011-05-24T12:56:22.527 に答える
1

'setDataXML'ハンドラーメソッドは必要ありません。また、「init」メソッドに「URLLoader」または「URLRequest」は必要ありません。FusionChartsは、XMLデータとXMLパスをサポートしています。したがって、「setDataXML」を削除し、「init」メソッドからすべてのコードを削除して、fw.addEventListener(FCEvent.FCRenderEvent, wgdtRendHandler); ハンドラーメソッドの下に追加します-

protected function wgdtRendHandler(e:FCEvent):void{
     e.target.FCSetDataURL='data/AvgPUE.xml';
     e.target.removeEventHandler(FCEvent.FCRenderEvent, wgdRendHandler);
}

これはあなたのために働くはずだと思います。それでもグラフで更新されたデータを取得できない場合は、「init」メソッドのXMLファイルをチェックして、その時点で正しく更新されているかどうかを確認してください。

于 2011-05-24T12:58:45.310 に答える