Posted on 2009-03-06 13:37
Robert Su 阅读(1758)
评论(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);
}