Webfocus Flex 之间通讯

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,我自己写了个好用的版本!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值