对象到数组集合

时间:2010-11-22 16:04:32

标签: actionscript-3 flex3

我有一个应用程序,它接受一些数据库信息并将其推送到数据网格或图表。

我遇到过这样一个错误:只有一行并试图在数组中使用它,所以我可以在我的应用程序中使用它。它引起了我的注意,它是人们面临的一个非常普遍的问题,但无论尝试什么,我似乎无法绕过它。

我的actionscript有一个通过ASP向数据库转发的函数,并在事件中返回数据 - 如下所示(obv我已经删除了一些东西 - 对mssqlQuery函数进行了调用 - 只有一个我有下面的创伤)

mssqlQuery("SELECT (CASE SLARag ,COUNT (SLARag)  as  Volume  FROM [CMI_ClientMI].[Portal].[BatchUpdate]","BusSegBuildSummary");}

public static function  mssqlQuery(sql:String,fid:String):void {
var http:HTTPService = new HTTPService;
var parm:Object = new Object;
parm.fas_sql = sql;
parm.fas_db = mssql_db;
http.url = mssql_url+"?irand="+Math.random();
// http.showBusyCursor = true;
http.request = sql;
http.addEventListener(ResultEvent.RESULT, mssqlResult);
http.addEventListener(FaultEvent.FAULT, mssqlFault);
http.method = "POST";
sqlToken = http.send(parm);
sqlToken.param = fid;
}

//Var for BusSegBuildSummary arraycollection
[Bindable]
public static var _BusSegBuildSummary:ArrayCollection = new ArrayCollection();


//Case statement for BusSegBuildSummary
case "BusSegBuildSummary":


if( event.result.results.record is ObjectProxy ){
trace("this is object Proxy");

}
else{
   trace("this isnt object Proxy");
   _BusSegBuildSummary = event.result.results.record;

}

break;

所以 - 如果结果中有多条记录 - 那么我们就可以了 - 它是跟踪(“这是对象代理”);有点麻烦。 我认为我必须将对象转换为数组收集,并且我尝试了许多不同的方法但没有成功。

有什么想法吗?我现在已经挣扎了一段时间,我很恐慌!

2 个答案:

答案 0 :(得分:1)

     
     if( event.result.results.record is ObjectProxy ){
       var obj:ObjectProxy = event.result.results.record as ObjectProxy;
       _BusSegBuildSummary = new ArrayCollection([obj.object]);
      }

答案 1 :(得分:0)

这是未经测试的,但我认为它可能有用。只需使用ArrayUtil.toArray()将ObjectProxy转换为ArrayCollection。

// import array utils
import mx.utils.ArrayUtil;

// later on
var record:* = event.result.results.record;
if (record is ArrayCollection) {
  _BusSegBuildSummary = record;
} else if (record is ObjectProxy) {
  _BusSegBuildSummary = new ArrayCollection(ArrayUtil.toArray(record)); 
}