0

我有一个包含一些数据的数组集合对象'invArrayCol'。我也有一个数据网格。我已将 dataProvider 设置为 invArrayCol。当我将数据与数据网格一起使用时,我会正确显示数据。但是,在数据网格以外的任何地方使用时,相同的 invArrayCol 显示为 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();
}

这 2 行将数据设置为 invArrayCol

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

但在这里它给出了 invArrayCol 的值为 null。

datagrid_dataprovider=new ArrayCollection();
datagrid_dataprovider=invArrayCol;

请告诉我一些解决方法。

4

1 回答 1

1

ResultEvent 的结果可能会返回一个 ObjectProxy,以防数据长度为 1。通过“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

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

于 2012-06-01T07:52:18.170 回答