当WebService返回的结果是DataSet时,Flex如何处理
以查询火车时刻表的WebService为例:
http://webservice.webxml.com.cn/WebServices/TrainTimeWebService.asmx?wsdl
顺便介绍下Flex调用WebService,相信能看到这篇随笔的人都已经熟悉了,但还是希望有机会照顾一下新手
在你新建的Application中,实例化WebService对象:
<mx:WebService id="ws" wsdl="http://webservice.webxml.com.cn/WebServices/TrainTimeWebService.asmx?wsdl" showBusyCursor="true" fault="fault_Handler(event)"> <mx:operation name="getStationAndTimeByStationName" result="result_Handler(event)"/> </mx:WebService>
wsdl是你要调用的WebService,operation是它的方法,调用这个方法时,结果交给result_Handler(event)函数。
function fault_Handler(event:FaultEvent){
Alert.show(event.fault.message);
}
function result_Handler(event:ResultEvent){
dg.dataProvider=event.result.Tables.TimeTable.Rows;
}
你可以在浏览器中先试一下,在IE中打开: |
http://webservice.webxml.com.cn/WebServices/TrainTimeWebService.asmx?op=getStationAndTimeByStationName<br> |
输入“始发站”和“抵达站”,点“调用”,结果是一个XML: |
以下是完整代码(我定义的是一个组件):
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%" fontSize="12"
>
<mx:Form id="form" width="100%" height="150">
<mx:FormItem label="发车站:">
<mx:TextInput id="input_start" width="200" text="上海"/>
</mx:FormItem>
<mx:FormItem label="抵达站:">
<mx:TextInput id="input_end" width="200" text="北京"/>
</mx:FormItem>
<mx:FormItem>
<mx:Button id="bt" label="查询" click="init()"/>
</mx:FormItem>
</mx:Form>
<mx:DataGrid id="dg" width="100%" height="100%" y="{form.height}">
<mx:columns>
<mx:DataGridColumn headerText="车次" dataField="TrainCode"/>
<mx:DataGridColumn headerText="始发站" dataField="FirstStation"/>
<mx:DataGridColumn headerText="终点站" dataField="LastStation"/>
<mx:DataGridColumn headerText="发车站" dataField="StartStation"/>
<mx:DataGridColumn headerText="发车时间" dataField="StartTime"/>
<mx:DataGridColumn headerText="抵达站" dataField="ArriveStation"/>
<mx:DataGridColumn headerText="抵达时间" dataField="ArriveTime"/>
<mx:DataGridColumn headerText="里程(KM)" dataField="KM"/>
<mx:DataGridColumn headerText="历时" dataField="UseDate"/>
</mx:columns>
</mx:DataGrid>
<mx:WebService id="ws" wsdl="http://webservice.webxml.com.cn/WebServices/TrainTimeWebService.asmx?wsdl"
showBusyCursor="true" fault="fault_Handler(event)">
<mx:operation name="getStationAndTimeByStationName" result="result_Handler(event)"/>
</mx:WebService>
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.collections.ArrayCollection;
[Bindable]
var ac:ArrayCollection=new ArrayCollection;
public function init():void{
ws.getStationAndTimeByStationName(input_start.text,input_end.text,'');
}
function fault_Handler(event:FaultEvent){
Alert.show(event.fault.message);
}
function result_Handler(event:ResultEvent){
dg.dataProvider=event.result.Tables.TimeTable.Rows;
}
]]>
</mx:Script>
</mx:Canvas>
http://www.cnblogs.com/frostbelt/archive/2010/11/18/1880672.html
如果你看了,搞定了,顶一下吧
如果你看了,没搞定,问一下吧
希望路过的大家多多交流
浙公网安备 33010602011771号