<?
xml version="1.0" encoding="utf-8"
?>
< mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml" layout ="absolute" >
< mx:Script >
<![CDATA[
import mx.controls.Alert;
]]>
</ mx:Script >
< mx:WebService useProxy ="false" wsdl ="http://localhost/WebSite/Service.asmx?WSDL" id ="ws" showBusyCursor ="true" >
< mx:operation name ="GetDataTable2" >
</ mx:operation >
</ mx:WebService >
< mx:Button x ="153" y ="20" label ="Get DataSet" click ="ws.GetDataTable2.send();" />
< mx:DataGrid left ="22" right ="22" top ="50" bottom ="386" id ="dg2"
dataProvider ="{ws.GetDataTable2.lastResult.diffgram.NewDataSet.Table}" >
< mx:columns >
< mx:DataGridColumn headerText ="编号" dataField ="编号" />
< mx:DataGridColumn headerText ="门禁控制器号" dataField ="门禁控制器号" />
< mx:DataGridColumn headerText ="帐号" dataField ="帐号" />
< mx:DataGridColumn headerText ="卡号" dataField ="卡号" />
< mx:DataGridColumn headerText ="交易时间" dataField ="交易时间" />
< mx:DataGridColumn headerText ="上传结果" dataField ="上传结果" />
< mx:DataGridColumn headerText ="流水类型" dataField ="流水类型" />
</ mx:columns >
</ mx:DataGrid >
</ mx:Application >
< mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml" layout ="absolute" >
< mx:Script >
<![CDATA[
import mx.controls.Alert;
]]>
</ mx:Script >
< mx:WebService useProxy ="false" wsdl ="http://localhost/WebSite/Service.asmx?WSDL" id ="ws" showBusyCursor ="true" >
< mx:operation name ="GetDataTable2" >
</ mx:operation >
</ mx:WebService >
< mx:Button x ="153" y ="20" label ="Get DataSet" click ="ws.GetDataTable2.send();" />
< mx:DataGrid left ="22" right ="22" top ="50" bottom ="386" id ="dg2"
dataProvider ="{ws.GetDataTable2.lastResult.diffgram.NewDataSet.Table}" >
< mx:columns >
< mx:DataGridColumn headerText ="编号" dataField ="编号" />
< mx:DataGridColumn headerText ="门禁控制器号" dataField ="门禁控制器号" />
< mx:DataGridColumn headerText ="帐号" dataField ="帐号" />
< mx:DataGridColumn headerText ="卡号" dataField ="卡号" />
< mx:DataGridColumn headerText ="交易时间" dataField ="交易时间" />
< mx:DataGridColumn headerText ="上传结果" dataField ="上传结果" />
< mx:DataGridColumn headerText ="流水类型" dataField ="流水类型" />
</ mx:columns >
</ mx:DataGrid >
</ mx:Application >
注意此处:
dataProvider="{ws.GetDataTable2.lastResult.diffgram.NewDataSet.Table}">
应该指出的是在Flex中解析DataTable是非常慢的,能够明显感觉到鼠标的停顿。
而且存在一个问题就是DataTable中只有一条数据的时候,Flex解析的结果是ProxyObject而不是ArrayCollection,需要手工处理才能绑定DataGrid。
建议使用DataSet返回XmlDocument,不过同样存在一条数据的问题。
.NET
[WebMethod]
public XmlDocument GetList( int id)
{
try
{
DataSet ds = new BLL.User.GetList(id);
XmlDocument xml = new XmlDocument();
xml.LoadXml(ds.GetXml());
return xml;
}
catch (Exception ex)
{
XmlDocument xml = new XmlDocument();
xml.LoadXml( " <Error> " + ex.Message + " </Error> " );
return xml;
}
}
public XmlDocument GetList( int id)
{
try
{
DataSet ds = new BLL.User.GetList(id);
XmlDocument xml = new XmlDocument();
xml.LoadXml(ds.GetXml());
return xml;
}
catch (Exception ex)
{
XmlDocument xml = new XmlDocument();
xml.LoadXml( " <Error> " + ex.Message + " </Error> " );
return xml;
}
}
Flex
private
var
mydata:ArrayCollection
=
new
ArrayCollection();
//
Data
private function getListResult(event:ResultEvent): void {
try {
mydata.removeAll(); // 清空原数据
if (event.result.Error != null ){ // 服务器端异常,见.NET上的catch
Alert.show(event.result.Error);
} else {
if (event.result.diffgram.NewDataSet != null ){
if (event.result.diffgram.NewDataSet.ds is ArrayCollection) // 判断是否是一条数据,使用DataTable时同样存在
mydata = event.result.diffgram.NewDataSet.ds as ArrayCollection;
else
mydata.addItem(event.result.diffgram.NewDataSet.ds); // 只有一条数据
}
}
}
catch (err:Error){
// 处理异常
}
}
private function getListResult(event:ResultEvent): void {
try {
mydata.removeAll(); // 清空原数据
if (event.result.Error != null ){ // 服务器端异常,见.NET上的catch
Alert.show(event.result.Error);
} else {
if (event.result.diffgram.NewDataSet != null ){
if (event.result.diffgram.NewDataSet.ds is ArrayCollection) // 判断是否是一条数据,使用DataTable时同样存在
mydata = event.result.diffgram.NewDataSet.ds as ArrayCollection;
else
mydata.addItem(event.result.diffgram.NewDataSet.ds); // 只有一条数据
}
}
}
catch (err:Error){
// 处理异常
}
}