這是我遇到的一個奇怪問題或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