2010-11-22 88 views
1

我有一个应用程序需要一些数据库信息并将其推入到数据网格或图表中。对象到数组集合

我遇到过这样的单行错误,并试图在数组中使用它,以便我可以在我的应用程序中使用它。它引起了我的注意,即它是人们面临的一个相当普遍的问题,但无论如何,我似乎都无法绕过它。

我的动作有一个函数,通过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; 

所以 - 如果结果中有一个以上的纪录 - 然后我们都很好 - 它跟踪(“这是对象代理”);有点麻烦。 我认为我必须将该对象作为一个arraycollection进行投射,并且我尝试了许多不同的方式,但都没有成功。

任何想法?我一直在挣扎一段时间,我很恐慌!

回答

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)); 
} 
1
  
    if(event.result.results.record is ObjectProxy){ 
     var obj:ObjectProxy = event.result.results.record as ObjectProxy; 
     _BusSegBuildSummary = new ArrayCollection([obj.object]); 
     }