2009-08-24 72 views
0

當DataGrid的dataProvider是對象數組時,如何將每個列的dataField設置爲對象的屬性。將對象數組分配給DataGrid

我有一個ArrayCollection(比方說一個),其中每個項是一個對象 例如a[i] = data:Object 當對象數據具有一些子屬性 - data.namedata.titledata.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> 

編輯 - 確定現在根據放棄我以前的答覆您數據請試試

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的數據是比平常更深的一個對象。 – 2009-08-24 16:34:57

+0

刪除樹類型只是刪除HierarchicalData並添加您的收集和數據可以提供您的數據樣本 – 2009-08-24 17:02:35

+0

我已經添加了我的數據樣本。 – 2009-08-24 17:31:29