2009-08-24 73 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