2016-09-20 19 views
0

これは私が遭遇した変な問題またはFlex 3の欠点です。私は、SOAPメッセージング・プロトコルを使用していますし、ポップアップ上で私が持っている「メモ」欄を埋めるために、サーバからの応答は次のようになります。数字の文字列を指数形式に変換する

Fiddler response - GLNotes

これは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のためのウォッチ式を作成し、私は次を参照してください。

SelectedItem numeric data

GLNotesが変換なっているのはなぜここの番号に?この暗黙の型変換をテストするために、私はノートフィールドに一部の文字を入れて、ウォッチ式にこれを得た:

SelectedItem string data

GLNotesフィールドは文字列として扱われているいくつかのアルファベットの存在と。とにかく私はこの値を強く型付けし、暗黙の変換を適用しないことができますか?追加情報が必要な場合はお知らせください。ありがとう!

編集:@Panが示唆したように

、私はのArrayCollection AccrualDataProviderように私のdataProviderを変更しました。

<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が含まれている、ことがわかりました。

DataProvider object

私が回避策のために何をすべきか、私たちはこの暗黙の型変換を避けるために、いくつかの余分なコードを記述する必要があること悲しいです:「/」をサーバから送信すると、ときにGLNotesをpreceed labelFunctionで '/'をエスケープします。 flexはそれを文字列として扱い、数字の文字列を変更しません。

は、サーバ側で行うことができます任意の設定がありますので、XMLは、SOAP XML応答に文字列のデータ型を強制的に?

答えて

0

あなたは、DataGridのデータとショーのカスタムビューのlabelFunctionを試すことができます。あなたがのlabelFunctionを使用した後に問題がまだ存在していた場合はここで

<mx:Script> 
    <![CDATA[ 

     [Bindable] 
     private var Item:Object = [{GLNodes:0x4582e12},{GLNodes:0x4582e13}]; 

     private function GLNodesLabelFunction(obj:Object, column:DataGridColumn):String 
     { 
      return (obj.GLNodes).toString(16);//show exponential form 
     } 
    ]]> 
</mx:Script> 

<mx:DataGrid dataProvider="{Item}" id="AccrualList"> 
    <mx:columns> 
     <mx:DataGridColumn labelFunction="GLNodesLabelFunction"/> 
    </mx:columns> 
</mx:DataGrid> 

(データプロバイダが配列でないXMLである)の例ですが、私は問題は、XMLのdataProviderを使用する方法かもしれないと思います。

+0

あなたの回答に基づいて私の編集を参照してください。 – rakemen

関連する問題