刚接触flex. 在用HTTPService获取XML格式数据再绑定给DataGrid时.遇到一个很"奇怪"的问题
就是当xml的条目小于等于1时,就会出错. 很是郁闷了一段时间
后来才发现. 问题即不是出在HTTPService上,也不是出在DataGrid上. 而是出在 RESULT_FORMAT_E4X 型数据类型转化为ArrayCollection上
原来 event.result 返回的是object. 当一条记录时,赋给集合,那肯定是有问题
如果返回多于1条, 就会认为是集合. 再赋出ArrayCollection或绑定DataGrid就没问题了
所以返回的object 一定要转化.
以下的代码就不会出错了.
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
[Bindable]
private var xmls:ArrayCollection=new ArrayCollection();
private var hs:HTTPService=new HTTPService();
private function g():void
{
hs.url=" + Math.random().toString();
hs.resultFormat=HTTPService.RESULT_FORMAT_E4X;
hs.addEventListener(ResultEvent.RESULT, r);
hs.send();
}
private function r(event:ResultEvent):void
{
var xml:XML=event.result as XML;
for each (var xm:XML in xml.item)
{
xmls.addItem(xm);
}
dg.dataProvider=xmls;
}
]]>