将对象数组分配给DataGrid
问题描述:
当DataGrid的dataProvider是对象数组时,如何将每个列的dataField设置为对象的属性。将对象数组分配给DataGrid
我有一个ArrayCollection(比方说一个),其中每个项是一个对象 例如a[i] = data:Object
当对象数据具有一些子属性 - data.name
,data.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|
答
这里是你的答案
<?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>
试试这个对不起这样的错误代码
但事情是我不想把它显示为一棵树。我想将它显示为普通表格。唯一的问题是,dataField的数据是比平常更深的一个对象。 – 2009-08-24 16:34:57
删除树类型只是删除HierarchicalData并添加您的收集和数据可以提供您的数据样本 – 2009-08-24 17:02:35
我已经添加了我的数据样本。 – 2009-08-24 17:31:29