前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flex 解析显示.net web service的DataTable返回

Flex 解析显示.net web service的DataTable返回

作者头像
用户3135539
发布2018-09-12 11:43:42
5860
发布2018-09-12 11:43:42
举报
文章被收录于专栏:

<?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>

注意此处:

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;         }     }

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){ //处理异常     }    }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2006-09-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档