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