2011-06-28 6 views
1

私はこのデータを持つXMLファイルを持っています。dataGridのセルにコンマで区切られた複数の値を設定する - Flex

<resultSet> 
<MerchandiseAssortmentCategory> 
           <merchandiseAssortmentCategoryId>275</merchandiseAssortmentCategoryId> 
           <merchandiseAssortmentCategoryName>D21 Plywood</merchandiseAssortmentCategoryName> 
           <merchandiseSubordinateClasses> 
               <merchandiseSubordinateClass> 
                   <merchandiseSubordinateClassNumber>2</merchandiseSubordinateClassNumber> 
                   <merchandiseSubordinateClassDescription>SHEATHING</merchandiseSubordinateClassDescription> 
               </merchandiseSubordinateClass> 
               <merchandiseSubordinateClass> 
                   <merchandiseSubordinateClassNumber>3</merchandiseSubordinateClassNumber> 
                   <merchandiseSubordinateClassDescription>WAFERBOARD</merchandiseSubordinateClassDescription> 
               </merchandiseSubordinateClass> 
               <merchandiseSubordinateClass> 
                   <merchandiseSubordinateClassNumber>4</merchandiseSubordinateClassNumber> 
                   <merchandiseSubordinateClassDescription>SANDED</merchandiseSubordinateClassDescription> 
               </merchandiseSubordinateClass> 
           </merchandiseSubordinateClasses> 
</MerchandiseAssortmentCategory> 
</resultSet> 

私はmerchandiseAssortmentCategoryNameとでデータグリッドを移入するために必要なすべての同じ行にカンマで区切ってmerchandiseSubordinateClassNumber(S)。

categoryListは、次のようにDataGridのdataProviderに定義されているこれは:

this.categoryList= evt.result.resultSet.MerchandiseAssortmentCategory; 

をし、これは、DataGridが

<mx:DataGrid x="466" y="73" width="192" height="225" 
     dataProvider="{categoryList}" 
     verticalScrollPolicy="on" 
     id="categories" 
     rowCount="10" enabled="true"> 
     <mx:columns> 
      <mx:DataGridColumn headerText="Category name" dataField="merchandiseAssortmentCategoryName"/> 
      <mx:DataGridColumn headerText="Subclasses" dataField="merchandiseSubordinateClasses.merchandiseSubordinateClass.merchandiseSubordinateClassNumber"/> 

      </mx:columns> 
    </mx:DataGrid> 

私はこれを実行する

をどのように定義されるか、唯一のカテゴリ名です満たされる。従属クラス番号は空白です。これで助けてください。ありがとう

答えて

3

ラベルに表示するコンマ区切りのリストを返すには、labelFunctionを記述する必要があります。

custom label functionの作成については、これらのドキュメントをお読みください。ここではいくつかの関連する詳細は以下のとおりです。

[引用開始]

あなたがコントロールに表示されるテキストを決定するロジックを提供するために、Listコントロールにラベル関数を渡すことができます。ラベル関数には、次の署名が必要です。

labelFunction(item:Object):String 

Labelコントロールによって渡されたitemパラメーターには、リストアイテムオブジェクトが含まれています。この関数は、Listコントロールに表示する文字列を返す必要があります。

注:ListBaseのほとんどのサブクラスでは、上記の署名付きのlabelFunctionプロパティも使用されます。 DataGridおよびDataGridColumnコントロールの場合、メソッドシグネチャはlabelFunction(item:Object、dataField:DataGridColumn):Stringです。itemにはDataGridアイテムオブジェクトが含まれ、dataFieldにはDataGridカラムが指定されます。

....

<mx:Script><![CDATA[ 
    public function myLabelFunc(item:Object):String { 
     return item.data + ", " + item.label; 
    } 
]]></mx:Script> 

[終了引用符]

項目オブジェクトパラメータは、あなたがラベルを生成したいのdataProviderの要素です。

あなたは、問題のクラスにlabelFunctionプロパティを指定することができます。

<mx:DataGridColumn labelFunction="myLabelFunc" /> 

また、カスタムのitemRendererと同じことを行うことができます。ここで

+2

カスタムアイテムのレンダラーでも同じことができますが、labelFunctionはString型のデータ変換に最適な方法です。 –

+0

labelFunctionはどのように記述しますか? –

+0

ラベルの使用に関する機能を参照してください。機能:http://livedocs.adobe.com/flex/3/html/help.html?content=dpcontrols_2.html私は私の答えを更新します。 – JeffryHouser

0

は、私がどうなるのかです:

  1. は、DataGrid内サブクラスの列のカスタムのitemRendererを作成します。
  2. set dataメソッドをオーバーライドしてすべてのサブクラスを処理し、カンマ区切り文字列を作成します。
  3. itemRendererのラベルの値をコンマで区切った文字列に設定します。
関連する問題