我通过http服务调用填充高级数据网格。我在我的mxml文件中定义了一个HTTPService,如下所示:
<mx:HTTPService id="srvReadMicroData"/>
它收到这个简单的&#34; XML文件&#34; ...
<MicroDataSet>
<Row arb_id='982215013000269378' />
</MicroDataSet>
......通过这些功能:
public function readMicroData():void
{
...
srvReadMicroData.url = myUrl;
srvReadMicroData.method = "POST";
srvReadMicroData.addEventListener("result", httpReadMicroDataResult);
srvReadMicroData.send();
}
public function httpReadMicroDataResult(event:ResultEvent):void {
myGrid.dataProvider=srvReadMicroData.lastResult.MicroDataSet.Row;
myGrid.validateNow();
}
当我在Flashbuilder中运行debug并查看http服务的值时,后三位数字是不同的。当我执行toString()时,值会再次更改。似乎发生了大量的事情:
srvReadMicroData.lastResult.IseeMicroDataSet.Row [&#34; arb_id&#34;] - &gt; 982215013000269440 srvReadMicroData.lastResult.IseeMicroDataSet.Row [&#34; arb_id&#34]。的toString() - &GT; 982215013000269300
关于如何解决这个问题的任何想法?
答案 0 :(得分:0)
您尝试获取的值似乎大于Flex最大值,因此它会对其进行舍入。 你可以添加一个&#34; A&#34;在您的&#39; arb_id&#39;开头的一封信这样的字符串:
<MicroDataSet>
<Row arb_id='a982215013000269378' />
</MicroDataSet>
通过这种方式,flex获得了#arb_id&#39;对象作为字符串。然后你可以将它子串起来删除&#39; a&#39;字符。 最后,您将拥有一个完全代表xml值的字符串。
希望有所帮助
答案 1 :(得分:0)
如果 srvReadMicroData.lastResult 包含 XML 数据,那么您可以按以下方式处理:
private var _xml:XML;
[Bindable]
private var rowArrayCollection:ArrayCollection = new ArrayCollection();
public function httpReadMicroDataResult(event:ResultEvent):void {
_xml = XML(srvReadMicroData.lastResult);
for each (var row:XML in _xml.Row) {
var rowObject:Object = new Object();
rowObject.arb_id = row.attribute("arb_id");
//trace("rowID: " + rowObject.arb_id);
rowArrayCollection.addItem(rowObject);
}
myGrid.dataProvider = rowArrayCollection;
}