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"; 
}
View Code

这样在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;
}
View Code

绑定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);
        }
View Code

这里的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>();
        }
View Code

这里使用Flex调试看看WebService返回的值的类型:

Flex调用WebService数据并显示_第1张图片

lastResult返回的值就是我们梦寐以求的ArrayCollection类型,这让我们省下很多事,绑定DataGrid只需要设置其dataProvider为this.dataService.GetFileInfo.lastResult即可

当然,如果你想在其事件中进行赋值,也可以使用event.result,因为这个值也是ArrayCollection类型

 

不正之处,欢迎指正,谢谢。

 

你可能感兴趣的:(webservice)