2009-08-24 9 views
0

DataGridのdataProviderがオブジェクトの配列である場合、各列のdataFieldをオブジェクトのプロパティに設定するにはどうすればよいですか。DataGridにオブジェクトの配列を割り当てる

IはArrayCollectionの(たとえばA)各項目は、オブジェクトデータは、いくつかのサブプロパティ有するa[i] = data:Object 例えばオブジェクト である - 私は先のデータグリッドを有するdata.namedata.titleを、data.content

をこのデータを表示します。

だから私は置く:

<mx:DataGrid id="entries" dataProvider="{resultRSS}"> 
    <mx:columns> 
<mx:Array> 
    <mx:DataGridColumn headerText="Title" dataField="data.title"/> 
    <mx:DataGridColumn headerText="Date" dataField="data.created"/> 
</mx:Array> 
    </mx:columns> 
</mx:DataGrid> 

をこれがすべてで動作するようには思えません。私は空のDataGridを取得します。 dataFieldプロパティを割り当てると、正しく表示されますか?私も{data.title}を試しました。

ありがとうございました。

編集:ここに私のデータのサンプル

-[]arraycollection 
--[0] 
----id="id1" 
----data. 
------title="something" 
------name="something" 
------text="some html" 
--[1] 
----id="id2" 
----data. 
------title="something2" 
------name="something2" 
------text="some html2" 

とテーブル

|title  |name  |text  | 
================================= 
|something |something |some html| 
|something2|something2|somehtml2| 

答えて

2

でなければなりませんが、あなたの答えは

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="initialize()"> 

<mx:Script> 
    <![CDATA[ 
     import mx.collections.HierarchicalData; 

     var a:Array = new Array(); 
     var o:Object = {}; 
     private function initialize():void{ 
      o["text"]="hello"; 
        o["desc"]="Rahul"; 
      a.push(o); 
     } 

    ]]> 
</mx:Script> 


    <mx:AdvancedDataGrid width="100%" height="100%" sortExpertMode="true" id="adg1" designViewDataType="tree" dataProvider="{new HierarchicalData(a)}"> 
     <mx:columns> 
      <mx:AdvancedDataGridColumn headerText="text" dataField="text"/> 
      <mx:AdvancedDataGridColumn headerText="desc" dataField="desc"/> 
     </mx:columns> 
    </mx:AdvancedDataGrid> 

</mx:Application> 

編集である - [OK]を、今あなたに応じて私の前の回答を破棄データを試してみる

var a:Array = new Array(); 
     var o:Object = {};  
     private function stringArrayToObjectArray():void{ 
      o["id"]="mauj"; 
      var oj:Object=new Object(); 
      oj["title"]="aaa"; 
      o["data"]=oj; 

      var oj1:Object=new Object(); 
      oj1["id"]="mauj2"; 
      var oj2:Object=new Object(); 
      oj2["title"]="qqqq"; 
      oj1["data"]=oj2; 


      a.push(o);  
      a.push(oj1);   
     } 

     private function some_labelFunc(item:Object,th:Object):String { 
       return item.data.title; 
      } 

    ]]> 
</mx:Script> 



    <mx:AdvancedDataGrid width="100%" height="100%" sortExpertMode="true" id="adg1" dataProvider="{a}"> 
     <mx:columns> 
      <mx:AdvancedDataGridColumn headerText="COMPANIES" dataField="data" labelFunction="some_labelFunc"/> 
     </mx:columns> 
    </mx:AdvancedDataGrid> 

</mx:Application> 

このような悪いコードに申し訳ありません。

+0

しかし、事は私はツリーとして表示したくありません。私はそれを通常の表として表示したい。唯一のことは、dataFieldのデータは通常より深い1つのオブジェクトです。 –

+0

ツリータイプを削除するだけでHierarchicalDataを削除してコレクションを追加し、データのサンプルを提供することができます –

+0

私は自分のデータのサンプルを追加しました。 –

関連する問題