Flex 调用WebService将数据显示在DataGrid里面
最近在学习Flex,就把学习的过程记录下载,方便自己查看。
这里参考了两位的博客:http://www.cnblogs.com/zhaozhan/archive/2010/10/08/1846170.html
http://www.cnblogs.com/wayne23/archive/2010/07/15/1778090.html
WebService(C#)代码如下:
[System.Web.Script.Services.ScriptService] public class Flex_WebService : System.Web.Services.WebService { [WebMethod] public DataTable GetDataTable() { DataTable dt = new DataTable("Employees"); dt.Columns.Add("id", typeof(int)); dt.Columns.Add("name", typeof(string)); dt.Columns.Add("age", typeof(int)); DataRow dr = dt.NewRow(); dr["id"] = 1; dr["name"] = "Shawn"; dr["age"] = 25; dt.Rows.Add(dr); dr = dt.NewRow(); dr["id"] = 2; dr["name"] = "Jack"; dr["age"] = 23; dt.Rows.Add(dr); return dt; } [WebMethod] public int sum(int num1, int num2) { return num1 + num2; } }
Flex文档结构如下:

主要就是上面两个文件,现在看看Flex代码:
下面是ActionScript代码:
import mx.controls.Alert; import mx.rpc.events.ResultEvent; import mx.rpc.soap.WebService; private var ws :mx.rpc.soap.WebService = new mx.rpc.soap.WebService(); protected function getWebService():void { ws.wsdl= "http://localhost:23602/Flex_WebService.asmx?wsdl"; ws.addEventListener(ResultEvent.RESULT,resultFunction);//增加返回结果的监听 ws.getOperation("sum").send("1","2"); ws.loadWSDL(); } protected function WebServiceGetTable():void { //var ws :mx.rpc.soap.WebService = new mx.rpc.soap.WebService(); ws.wsdl= "http://localhost:23602/Flex_WebService.asmx?wsdl"; ws.addEventListener(ResultEvent.RESULT,resultFunctiontable);//增加返回结果的监听 ws.getOperation("GetDataTable").send(); ws.loadWSDL(); } private function resultFunction(event:ResultEvent){ var s:int = event.result as int; Alert.show(s.toString(),"返回结果"); } private function resultFunctiontable(event:ResultEvent){ var funcName:String = event.target.name; var object=event.result; Alert.show(funcName,"返回结果"); myGrid.dataProvider = ws.GetDataTable.lastResult.Tables.Employees.Rows;//这个地方的Employees是表的名字 }
设计代码如下:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <s:layout> <s:BasicLayout/> </s:layout> <fx:Script source="GetWebService/TableWebService.as"/> <fx:Declarations> </fx:Declarations> <s:Button x="172" y="190" id="btn2" label="AS调用WebService" click="getWebService()"/> <mx:Panel width="400"> <mx:DataGrid id="myGrid" width="100%"> <mx:columns> <mx:DataGridColumn headerText="ID" dataField="id"/> <mx:DataGridColumn headerText="Name" dataField="name"/> <mx:DataGridColumn headerText="Age" dataField="age"/> </mx:columns> </mx:DataGrid> <mx:ControlBar> <mx:Button label="Get DataTable" click="WebServiceGetTable()"/> </mx:ControlBar> </mx:Panel> </s:Application>
运行效果如下:
posted on 2015-12-15 14:21 Geography爱好者 阅读(130) 评论(0) 收藏 举报
浙公网安备 33010602011771号