Flex Fusion Charts с веб-сервисом - PullRequest
0 голосов
/ 31 марта 2011

У меня есть проект flex, в котором я хочу вызвать веб-сервис и передать значения из него в файл xml для обновления диаграммы слияния xml. Мой код

<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" />

в объявлении, которое я вызываювеб-сервис.и при создании Compelete я отправляю данные ID пользователя для получения данных от веб-сервиса.теперь, где именно мне нужно вызвать функцию init, чтобы он обновлял xml-файл значениями, поступающими из веб-сервиса, и отображал виджет fusion

Ответы [ 2 ]

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

Вам не нужен метод-обработчик setDataXML. Также вам не нужен никакой URLLoader или URLRequest в методе init. 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);
}

Я думаю, это должно сработать для вас. Если вы все еще не получили обновленные данные на диаграмме, проверьте файл XML в методе 'init', правильно ли он обновлен в тот момент.

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

Вы можете вызвать функцию init, когда диаграмма закончит загрузку и будет готова к данным.

Вы можете сделать это, слушая FCLoadEvent или FCRenderEvent датчика.

Пожалуйста, попробуйте использовать:

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

или

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