Actionscript 3 Flex:无法在数组集合中获取值

Actionscript 3 Flex:无法在数组集合中获取值,actionscript-3,apache-flex,Actionscript 3,Apache Flex,我有一个数组集合对象“invaraycol”,它保存一些数据。我还有一个数据网格。我已经将dataProvider设置为InvaryCol。当我将数据与数据网格一起使用时,我会正确地显示数据。但当在datagrid以外的任何地方使用相同的InvaryCol时,都会显示null。我写了这段代码 protected function titlewindow1_creationCompleteHandler(event:FlexEvent):void { Cgt=new CgtSRObject

我有一个数组集合对象“invaraycol”,它保存一些数据。我还有一个数据网格。我已经将dataProvider设置为InvaryCol。当我将数据与数据网格一起使用时,我会正确地显示数据。但当在datagrid以外的任何地方使用相同的InvaryCol时,都会显示null。我写了这段代码

protected function titlewindow1_creationCompleteHandler(event:FlexEvent):void
{
    Cgt=new CgtSRObject();

    var autoobj:CSAutoNumberType=new CSAutoNumberType();
    autoobj.addEventListener(ResultEvent.RESULT,getInvNubmer);
    autoobj.getInvNo(invoiceType);

    trace(robj.salesPerson_Id);     

    getSalesReturnCgt.token=csInvoicePrint.getCgtData(robj.receive_Id);
    getSalesReturnCgt.addEventListener(ResultEvent.RESULT,getInvArrList);
    trace(Cgt.sr_no);

    datagrid_dataprovider=new ArrayCollection();
    datagrid_dataprovider=invArrayCol;
    calculateTotal();
}
这两行将数据设置为不变量

getSalesReturnCgt.token=csInvoicePrint.getCgtData(robj.receive_Id);
getSalesReturnCgt.addEventListener(ResultEvent.RESULT,getInvArrList);
但在这里,它将INVARAYCOL的值设为null

datagrid_dataprovider=new ArrayCollection();
datagrid_dataprovider=invArrayCol;

请告诉我一些解决方法。

如果数据长度为1,ResultEvent的结果可能会返回ObjectProxy。通过“as”进行施法会导致施法失败。因此,只需检查结果的类型,就可以确定结果是否可以直接使用,或者是否必须在其周围包装一个ArrayCollection

// This happens asynchronously, should have no effect in the function
getSalesReturnCgt.addEventListener(ResultEvent.RESULT,getInvArrList);
此外,

// datagrid_dataprovider=new ArrayCollection(); // This line is obsoloete
datagrid_dataprovider=invArrayCol; // invArrayCol will get its value later

因此,看起来您希望某些代码同步执行,但它始终异步工作。

您说变量
invaraycol
为空。但是在您所展示的代码中,这个变量从未被赋值(因此它将为null)。您显示的代码片段不足以诊断问题。另外,为什么要设置数据网格的数据提供程序两次?第一次到新的ArrayCollection,然后第二次到InvaryCol?