您的位置:首页 > 其它

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,我自己写了个好用的版本!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: