Posted on 2009-03-06 13:37
Robert Su 閱讀(1763)
評論(0) 編輯 收藏 所屬分類:
Flex
昨天一直被一個問題困擾,關于XMLlistCollection的賦值問題
問題概述:
<mx:DataGrid id="videoList" dataProvider="{gridData}" ...
gridData定義
[Bindable] public var gridData:XMLListCollection = new XMLListCollection();
gridData的取值來自于
<mx:HTTPService id="videoXml" method="POST" url="{serviceUrl}" resultFormat="e4x" result="loadDataOk();" />
<mx:XMLListCollection id="videoSrc" source="{videoXml.lastResult.webVideos}"/>
這樣的做的目的在于想把每次請求回來的數據累加——“ +=”
之前一直錯誤的賦值方式:
gridData=videoSrc
這樣會導致dataProvider與gridData指向同一個對象,與指針一樣。
所以當HTTPService 返回數據改變, videoSrc改變的時候,DataProvider里的數據都是videoSrc當前數據
而大小已經變成了gridData一樣的大小了
改正后代碼
if(gridData.length==0){
//gridData=videoSrc; //錯誤代碼
gridData = new XMLListCollection((XMLList)(videoSrc.source));
}else{
gridData=MergXMLCollect(gridData,videoSrc);
}