Flex调用WebService数据并显示
WebService在Flex中使用在网上有很多参考资料,这里不重点说明,下面就给出一位大牛写的系列文章:http://blog.sina.com.cn/s/blog_62d65ee50100s2uk.html
WebService调用回来的数据可能是多种格式,可以是string、DataTable、自定义类型、泛型等。下面我们就如下返回的数据获取并显示
返回string类型:
/// <summary> /// 返回字符串 /// </summary> /// <returns></returns> [WebMethod] public string HelloWorld() { return "Hello World"; }
这样在Flex中获取该数据:evt.result.toString()
返回DataTable类型:
[WebMethod(Description="该方法将返回DataTable类型的据")] public DataTable GetDataTable() { DataTable dt = new DataTable("Books"); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Author", typeof(string)); dt.Columns.Add("Price", typeof(double)); DataRow dr = dt.NewRow(); dr["Id"] = 1; dr["Name"] = "《Flex游戏开发》"; dr["Author"] = "张三"; dr["Price"] = 54.85; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Id"] = 2; dr["Name"] = "《Flash游戏开发》"; dr["Author"] = "李四"; dr["Price"] = 65.50; dt.Rows.Add(dr); return dt; }
绑定DataGrid可以使用{this.dataService.GetDataTable.lastResult.Tables.Books.Rows}
返回自定义类型:
这里我使用的.Net的LinQ to Sql
[WebMethod] public T_FileInfo GetFileInfoByName(string strFileName) { dbDataContext db = new dbDataContext(); return db.T_FileInfo.FirstOrDefault(a=>a.FileName==strFileName); }
这里的T_FileInfo是数据库的一张表,在这里可以把它看成你自定义的一个类
如果要得到该行数据的某一列值:event.result.FileName(这里FileName是表中的字段名)或this.dataService.GetFileInfoByName.lastResult.FileName
如果要绑定到DataGrid上,只需要自定义一个数据集合并绑定到Flex即可:
protected function GetFileInfoByName(event:ResultEvent):void
{
if (event.result)
{
var result:Object=event.result;
var returnData:Array=[{name: result.FileName, path: result.FilePath}];//自定义数据集合
data=new ArrayCollection(returnData);
}
}
返回泛型集合:
[WebMethod] public List<T_FileInfo> GetFileInfo() { db=new dbDataContext(); var query = from fileInfo in db.T_FileInfo select fileInfo; return query.ToList<T_FileInfo>(); }
这里使用Flex调试看看WebService返回的值的类型:

lastResult返回的值就是我们梦寐以求的ArrayCollection类型,这让我们省下很多事,绑定DataGrid只需要设置其dataProvider为this.dataService.GetFileInfo.lastResult即可
当然,如果你想在其事件中进行赋值,也可以使用event.result,因为这个值也是ArrayCollection类型
不正之处,欢迎指正,谢谢。

浙公网安备 33010602011771号