簡體   English   中英

Flex:無法在數組集合中獲得價值

[英]Flex: Cannot get value in array collection

我有一個數組集合對象“ invArrayCol”,其中包含一些數據。 我也有一個數據網格。 我已經將dataProvider設置為invArrayCol。當我將其與數據網格一起使用時,我可以正確顯示數據。 但是,當在datagrid之外的其他地方使用同一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;

請告訴我一些解決方法。

如果數據的長度為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

因此,您似乎希望某些代碼可以同步執行,但始終可以異步工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM