这是我遇到的一个奇怪问题或Flex 3的一个缺点。我使用SOAP消息传递协议,并从服务器填充“说明”字段,我有一个弹出式的反应是这样的:Flex将数字字符串转换为指数形式
由于这是SOAP我得到了响应,一个XML字符串。 GLNotes字段值是4582e12。
我如何处理这个响应的一些Flex代码:
<mx:DataGrid dataProvider="{AccruedIncomeWS.GetAccruedIncomeList.lastResult.root.AccruedIncomeList.Item}"
itemClick="AccrualClick(event);" id="AccrualList>
<mx:columns>
...
</mx:columns>
</mx:DataGrid>
现在,我创建了AccrualList.selectedItem手表表达,我看到:
为什么GLNotes得到转换数字在这里?为了测试这个隐式转换我把一些字符在注释和得到这个在监视表达式:
随着一些字母的GLNotes领域被视为一个字符串的存在。无论如何,我可以使这个值强类型,并没有任何隐式转换应用?让我知道是否需要额外的信息。谢谢!
编辑:
由于@Pan建议,我改变了我的dataProvider是一个ArrayCollection的 AccrualDataProvider。
<mx:DataGrid dataProvider="{AccrualDataProvider}" itemClick="AccrualClick(event);" id="AccrualList>
<mx:columns>
...
</mx:columns>
</mx:DataGrid>
处理来自服务器的响应,并用它填充ArrayCollection的。
private function HandleAccrualList(event:ResultEvent):void
{
AccrualDataProvider = new ArrayCollection();
AccrualDataProvider = AppHelper.ForceArrayCollection(event.result.root.AccruedIncomeList.Item);
}
上进行调试,我发现,在的ArrayCollection AccrualDataProvider仍然包含GLNotes为一个数字而不是一个字符串。
这是可悲的,我们必须写一些额外的代码来避免这种隐式转换,我的工作围绕做的是:preceed的GLNotes与来自服务器的“/”发送,然后当在labelFunction中,使用'/'。所以flex将它视为一个字符串并保持数字字符串不变。
是否有任何设置可以在服务器端完成,因此XML将强制字符串的数据类型为SOAP XML响应?
请参阅我的编辑问题根据您的回应。 – rakemen