刚接触flex. 在用HTTPService获取XML格式数据再绑定给DataGrid时.遇到一个很"奇怪"的问题
就是当xml的条目小于等于1时,就会出错. 很是郁闷了一段时间
后来才发现. 问题即不是出在HTTPService上,也不是出在DataGrid上. 而是出在 RESULT_FORMAT_E4X 型数据类型转化为ArrayCollection上
原来 event.result 返回的是object. 当一条记录时,赋给集合,那肯定是有问题
如果返回多于1条, 就会认为是集合. 再赋出ArrayCollection或绑定DataGrid就没问题了
所以返回的object 一定要转化.
以下的代码就不会出错了.
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Button label="Button" click="g();"/>
<mx:DataGrid id="dg" width="100%" height="100%">
<mx:columns>
<mx:DataGridColumn dataField="a"/>
<mx:DataGridColumn dataField="b"/>
<mx:DataGridColumn dataField="c"/>
</mx:columns>
</mx:DataGrid>
<mx:Script>
<![CDATA[
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="http://localhost:8081/test.php?" + 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;
}
]]>
</mx:Script>
</mx:Application>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架