Delphi Xe DataSnap Rest + Flex 开发 基本探索3(取得后台 DataSet 数据集)
来源:互联网 发布:windows光盘怎么安装 编辑:程序博客网 时间:2024/04/30 09:50
在看本文章前,请参考 基本探索1 中的部分内容
本文介绍如何取得 后台delphi 生成的Tdataset 数据集,该功能需要后台链接数据库
后台代码
声明TSMTest = class(TDSServerModule) ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; dsp: TDataSetProvider; procedure DSServerModuleCreate(Sender: TObject); private { Private declarations } public { Public declarations } function GetDataset:Tdataset; end;实现function TSMTest.GetDataset: Tdataset;begin ADOQuery1.Close; ADOQuery1.Open; result := ADOQuery1;end;
本人用的ado组件,也可以用其他的数据库驱动 ,形式是一样的 只要返回Tdataset就可以了
(注意了,前台用delphi开发的话 直接返回Tdataset 中文字段是乱码,应该是不能直接返回Tdataset了,所以delphi的客户端建议直接使用datasetprovider 数据服务,当然也有其他办法,可以在网上在看看,有相关的文章 如何用Json 封装返回Tclientdataset)
前台效果
前台代码
protected function btndataset_clickHandler(event:MouseEvent):void{var read :ReadDataFromServer = new ReadDataFromServer;read.onLoadComplete = onDatasetLoad;read.Load('datasnap/rest/TSMTest/GetDataset');}public function JsonDatasetToArr(JsonObj:Object):ArrayCollection{ var fieldname:String;var arrFields:Array = new Array();var arrGrid:Array = new Array();var arrC:ArrayCollection = new ArrayCollection(arrGrid);var fieldcount:int;var i:int;for( i=0;i<JsonObj.table.length;i++ ){ fieldname = JsonObj.table[i][0].toString();trace(fieldname); var objItem :Object = new Object();objItem = JsonObj[fieldname];objItem['fieldname']= fieldname;arrFields.push(objItem);}if (arrFields.length>0){//有数据 var recCount:int= arrFields[0].length; // var oneArr:Array = new Array();//临时存储 for(var j:int=0;j<recCount;j++){ // oneArr.splice(0); var obj:Object = new Object(); for(i=0;i<arrFields.length;i++) { fieldname =arrFields[i]['fieldname']; obj[fieldname] = arrFields[i][j] ; } arrGrid.push(obj); } return new ArrayCollection(arrGrid);}else return null;}public function onDatasetLoad(e:Event):void{ var obj:Object; obj = JSON.decode(e.target.data).result[0];// var arrlist:ArrayCollection = JsonDatasetToArr(obj); grid.dataProvider = arrlist; /* var arrDesc :Array = obj['describe']; var arrSerialNo:Array = obj['serial_no']; var arrGrid:Array=new Array(); for(var i:int=0;i<arrDesc.length;i++){ arrGrid.push({'describe':arrDesc[i], 'serial_no':arrSerialNo[i]} ); } var arrlist:ArrayCollection = new ArrayCollection(arrGrid); grid.dataProvider = arrlist; /* var arr:Array =new Array({'describe':obj.describe}); var arr2:Array= new Array({'serial_no':obj.serial_no}); var list:Array = new Array(); list.push(arr,arr2); var arrlist:ArrayCollection= new ArrayCollection(list); grid.dataProvider = arrlist; */ }
注意 返回的dataset 是以Json格式封装的,不能直接绑定到Grid上面,需要解析出来
本人 自己写了一个 解析函数
<pre name="code" class="plain">public function JsonDatasetToArr(JsonObj:Object):ArrayCollection上面代码里面有.大家可以参考
0 0
- Delphi Xe DataSnap Rest + Flex 开发 基本探索3(取得后台 DataSet 数据集)
- Delphi Xe DataSnap Rest + Flex 开发 基本探索2(取得Json 数组)
- Delphi Xe DataSnap Rest + Flex 开发 基本探索1
- Delphi Xe DataSnap Rest + Flex 开发 基本探索5(Rest 服务参数传递)
- Delphi Xe DataSnap Rest + Flex 开发 基本探索6(flex 前台 Post 字节流 参数)
- Delphi Xe DataSnap Rest + Flex 开发 基本探索4(返回字节流 stream)
- delphi xe datasnap rest 相關
- Delphi XE程序设计系列 2-开发DataSnap/REST服务器
- Delphi XE程序设计系列 2-开发DataSnap/REST服务器
- Delphi XE程序设计系列 2-开发DataSnap/REST服务器
- Delphi XE程序设计系列 2-开发DataSnap/REST服务器
- Delphi XE程序设计系列 2-开发DataSnap/REST服务器
- Delphi XE程序设计系列 2-开发DataSnap/REST服务器 .
- Delphi XE程序设计系列 2-开发DataSnap/REST服务器
- Delphi XE程序设计系列 2-开发DataSnap/REST服务器
- 关于Delphi XE DataSnap心跳包
- Delphi XE之路(13)开发数据库三层应用的DataSnap
- delphi XE6 datasnap REST 系列之一
- list列表循环输出记录 <JSTL>标签
- 如何管理互联网接入多台计算机上
- 【webservice】调试方法篇(一、调试工具)
- 如何观看Netflix公司在瑞典
- cocos2d-x游戏是怎么跑起来的
- Delphi Xe DataSnap Rest + Flex 开发 基本探索3(取得后台 DataSet 数据集)
- spring security权限管理
- 如何更好地赚钱你的网站
- 如何改善搜索引擎排名,必须做技术
- iptables
- 没有远程桌面客户端访问许可证
- Maven入门篇(下)
- 获取时间区域内执行代码
- relative中的组件想和relative外部的组件对齐经验