2012-05-04 7 views
2

DataGridの列に数値を書式設定しようとしています。私はそれを実行すると私は下の私の単純化されたテストプログラムでエラーが発生しています。今まで私が見たすべての例では、列データが文字列です。数字を使ってそれを行う方法はありますか? checkingの値をフォーマットするには、以下のコードを変更するにはどうすればよいですか?フレックス:数値のDataGrid列の書式設定

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx"> 

<fx:Script> 
    <![CDATA[  
     [Bindable] 
     public var checking:Array = new Array(1000000.2222, 0, 1000); 

     private function myLabelFunction(item:Array, column:DataGridColumn):String {  
       var result:String; 
       result = myFormatter.format(item); 
       return result; 
     } 
    ]]> 
</fx:Script> 

<fx:Declarations> 
    <s:NumberFormatter id="myFormatter" 
         fractionalDigits="2" 
         decimalSeparator="." 
         groupingSeparator="," 
         useGrouping="true" 
         negativeNumberFormat="0" 
         /> 
</fx:Declarations> 

<mx:DataGrid id="dg1" dataProvider="{checking}" > 

    <mx:columns> 
     <mx:DataGridColumn dataField="checking" headerText="Checking" 
          labelFunction="myLabelFunction" /> 
    </mx:columns> 

</mx:DataGrid> 

</mx:Application> 

答えて

2
  1. 変更フィルタ関数署名(itemObjectなければならない)

    private function myLabelFunction(item:Object, column:DataGridColumn):String

  2. カラムからdataField="checking"を削除。
+0

はい、それが機能するようになりました。本当にありがとう! – ggkmath

1

ラベル機能は確実に機能しますが、私は通常、このような場合にItemRendererを使用します。レンダリング機能をオーバーライドして、グリッドビューの "ボックス"に何でも表示することができます。

適切な例はhereです。 DataGridの例の場合、約1/4ダウンスクロールします。

あなたが/いいえCASOデobjeto、DEVE-SE USARを使用してはならないオブジェクトの場合は
+0

おかげで、ありがとう。他の理由でItemRendererがすでに表示されている場合は、何らかの形でフォーマッタを追加するだけで、別のItemRendererを記述する必要はありませんか?私は何を変更/追加する必要がありますか? – ggkmath

+0

この例では、インラインアイテムレンダリングを使用しています。これらは、インラインである列に直接結び付けられています。外部アイテムレンダラー(通常は独自のスクリプトファイル内)を使用して、それを必要な数の列に結びつけることができます。データを適切に操作する関数を作成するだけです。データレンダラーでデータオブジェクトを取得するだけなので、何をすべきかを正確に把握するのは難しいことがあります。 – debracey

+0

私の質問は、ItemRendererでどのようなコントロールを使用して書式設定を行うのですか?たとえば、テキストの色を変更するには、を使用します。 NumberFormatterを内部に配置するために使用するコントロールは何ですか? – ggkmath

0

 private function myLabelFunction(item:Object, column:GridColumn):String {  
      var result:String; 
      result = myFormatter.format(item[column.dataField]); 
      return result; 
     } 
関連する問題