Webfocus Flex 之间通讯
2011-08-24 10:20
225 查看
package { import mx.collections.*; import mx.controls.*; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; public dynamic class ibiObject extends DataGrid { [Bindable] public var myXML:XML; [Bindable] public var webFocusXML:ArrayCollection; public var valign:XMLList; public var formats:XMLList; public var callBack:Function; public var fields:XMLList; public var dataSendMethod:String = "post"; public var datatype:XMLList; public function ibiObject() { webFocusXML = new ArrayCollection(); myXML=new XML(); return; }// end function public function init_comp(url:String, callback:Function): void { var par1:Object = null; var par2:Array = null; var par3:Array = null; var par_app:String = null; var par_app_Name:String = null; var intpar1:int = 0; var regE1:RegExp = null; var intpar2:int = 0; var httpServer1:* = new HTTPService(); this.callBack = callback; par1 = null; par2 = url.split("?"); par3 = []; if (par2.length > 1) { par3 = par2[1].split("&"); par1 = new Object(); intpar2 = 0; while (intpar2 < par3.length) { par_app = par3[intpar2]; intpar1 = par_app.indexOf("="); par_app_Name = par_app.substr((intpar1 + 1)); regE1 = /\+/g; par_app_Name = par_app_Name.replace(regE1, " "); par1[par_app.substr(0, intpar1)] = unescape(par_app_Name); intpar2 = intpar2 + 1; } httpServer1.url = par2[0]; } else { httpServer1.url = url; } if (this.dataSendMethod == "") { this.dataSendMethod = "post"; } httpServer1.method = this.dataSendMethod; httpServer1.addEventListener("result", this.httpResult); httpServer1.addEventListener("fault", this.httpFault); httpServer1.resultFormat = "text"; httpServer1.send(par1); } private function httpResult(event:ResultEvent) : void { var tempResult:Object = null; trace("httpResult"); if (event != null) { tempResult = event.result; this.myXML = new XML(tempResult); this.fields = this.myXML..@fieldname; this.format = this.myXML..@focus_format; this.datatype = this.myXML..@datatype; this.valign = this.myXML..@valign; this.alias = this.myXML..@alias; this.width = this.myXML..@width; this.description = this.myXML..@description; this.title = this.myXML..@title; this.colnum = this.myXML..@colnum; setData(); } return; }// end function public function setData() : void { var finXML:ArrayCollection=new ArrayCollection(); var strCOL:* = this.myXML..col; var strTD:* = this.myXML..td; var recordsCount:int=this.myXML.report[0].@records; var columnsCount:int=this.myXML.report[0].@columns; var tempXML1:*; var tempINT1:int = 0; var objectArr:Object = new Object(); var finFlag:Boolean = false; for each (tempXML1 in strTD) { if(tempINT1 < columnsCount) { objectArr[this.fields[tempINT1].toString()]=tempXML1[0].toString(); tempINT1++; finFlag=true; } else if (tempINT1 == columnsCount) { finXML.addItem(objectArr); objectArr=new Object(); tempINT1=0; objectArr[this.fields[tempINT1].toString()]=tempXML1[0].toString(); tempINT1++; } } if(finFlag) { finXML.addItem(objectArr); } this.webFocusXML = finXML; this.callBack(); return; } private function httpFault(event:FaultEvent) : void { trace("httpFault"); }// end function public function getMaxValue(columnName:String):Number { var temp:String= getMaxValueWhich(columnName, false); return Number(temp); }// end function public function getMaxValueWhich(columnName:String, useAgg:Boolean):String { var value1:String = null; var value2:Number = NaN; var tempValue1:* = undefined; var tempValue2:String = null; var tempInt1:int = 1; var tempFlag1:Boolean = false; var tempXML:* = this.webFocusXML; tempValue1 = tempXML.getItemAt(0); if (!tempValue1.hasOwnProperty(columnName)) { return "0"; } tempFlag1 = true; if (tempValue1[columnName] is String) { tempFlag1 = false; } if (tempFlag1) { value2 = tempValue1[columnName]; } else { value1 = tempValue1[columnName]; } while (tempInt1 < tempXML.length) { tempValue1 = tempXML.getItemAt(tempInt1++); tempValue2 = tempValue1[columnName]; if (tempFlag1) { if (tempValue1[columnName] > value2) { value2 = tempValue1[columnName]; } continue; } if (tempValue1[columnName] > value1) { value1 = tempValue1[columnName]; } } if (tempFlag1) { return value2.toString(); } return value1; }// end function } }
官方的有BUG,我自己写了个好用的版本!
相关文章推荐
- 实现 Web 后端和客户端之间的分布式和认证通讯
- Flex 与Python之间Socket通讯
- Flex 与 as3.0 SWF 之间的通讯
- Web User Controls之间的通讯
- FLEX与WEB项目简单HTTPSERVICE通讯
- C++与Flex之间socket通信policy-file-request解决方案
- Java Web之网络通讯
- Java Web之网络通讯
- 任务之间的通讯与同步
- Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE
- 常见Web技术之间的关系,你了解多少?
- 使用Httpservice和Webservice来和Flex进行通讯
- flex消费web服务的例子
- 安卓Fragment和Activity之间的数据通讯
- 深入理解Java Servlet与Web容器之间的关系
- 线程之间通讯之AsyncTask与Handler的区别
- 多Web服务器之间共享Session的解决方案
- 全网最详细的IDEA、Eclipse和MyEclipse之间于Java web项目发布到Tomcat上运行成功的对比事宜【博主强烈推荐】【适合普通的还是Maven方式创建的】(图文详解)
- c# 进程间同步实现 进程之间通讯的几种方法
- 在Web服务器之间共享文件和资源