Flex调用WebService后的数据处理
如果WebService返回的数据为DataTable或List<>类型,可以在每次读取数据的时候加入断点,然后观察最终生成数据的结构,断点最好加在ResultEvent事件内,因为这个时候才能确保从WebService获取到了数据
下面的例子分别接收从WebService返回String、DataTable、List<>类型的数据,并作相应的处理
WebService代码(.net):
[WebMethod]
public string GetString(string name)
{
return "你好," + name;
}
[WebMethod(Description = "该方法将返回DataTable类型的数据")]
public DataTable GetDataTable()
{
DataTable dt = new DataTable("MusicList");
dt.Columns.Add("ID");
dt.Columns.Add("Song");
dt.Columns.Add("Artist");
DataRow dr = dt.NewRow();
dr["ID"] = 1;
dr["Song"] = "长途伴侣";
dr["Artist"] = "刘德华";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 2;
dr["Song"] = "如果我变成回忆";
dr["Artist"] = "Tank";
dt.Rows.Add(dr);
return dt;
}
[WebMethod(Description = "该方法将返回List<>类型的数据")]
public List<Music> GetList()
{
return new List<Music>
{
new Music
{
ID = 3,
Song = "Nobody",
Artist = "wonder girls"
},
new Music
{
ID = 4,
Song = "吃你煮的鱼",
Artist = "南拳妈妈"
}
};
}Flex代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.rpc.soap.mxml.Operation;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.soap.WebService;
internal function onResult(evt:ResultEvent):void
{
var funcName:String = evt.target.name;
switch(funcName)
{
case "GetString":
Alert.show(evt.result.toString());
break;
case "GetDataTable":
myGrid.dataProvider = ws1.GetDataTable.lastResult.Tables.MusicList.Rows;
break;
case "GetList":
myGrid.dataProvider = ws1.GetList.lastResult;
break;
}
}
internal function onFault(evt:FaultEvent):void
{
Alert.show(evt.fault.faultDetail.toString());
}
]]>
</mx:Script>
<mx:WebService id="ws1" wsdl="http://localhost:12354/Sample0729/WebService.asmx?wsdl">
<mx:operation name="GetString" result="onResult(event);" fault="onFault(event);">
<mx:request>
<name>臣本布衣</name>
</mx:request>
</mx:operation>
<mx:operation name="GetDataTable" result="onResult(event);" fault="onFault(event);" />
<mx:operation name="GetList" result="onResult(event);" fault="onFault(event);" />
</mx:WebService>
<mx:DataGrid id="myGrid" x="167.5" y="67">
<mx:columns>
<mx:DataGridColumn headerText="ID" dataField="ID"/>
<mx:DataGridColumn headerText="歌曲名称" dataField="Song"/>
<mx:DataGridColumn headerText="歌手" dataField="Artist"/>
</mx:columns>
</mx:DataGrid>
<mx:Button label="返回字符串" click="ws1.GetString.send();" x="115" y="266"></mx:Button>
<mx:Button label="返回DataTable" click="ws1.GetDataTable.send();" x="258" y="266"></mx:Button>
<mx:Button label="返回List(泛型)" click="ws1.GetList.send();" x="410" y="266"></mx:Button>
</mx:Application>

浙公网安备 33010602011771号