我认为这是跳闸您的事情是,你不能定义一个DataGrid
(至少在没有很多适应的)这种方式。基本上,DataGrid
需要一组对象,它将显示为一组行。
列将作为视图播放dataProvider
中给定对象的特定属性。 A DataGridColumn
将显示与其dataField
属性的值相匹配的属性。
因此,一个快速/脏的例子如下。我遇到了麻烦,使用XML作为某种原因,一个数据源,所以我转换您的数据转换成通用的对象 - 不是我会建议在实际操作中 - 用于解释数据网格如何填充柱的目的:
<mx:Script>
<![CDATA[
private var data:Array = [
{column0:0.51, column1:0.52, column2:0.53, column3:0.54},
{column0:0.61, column1:0.62, column2:0.63, column3:0.64}
];
private var dataDisplayDP:ArrayCollection = new ArrayCollection(data);
private function dataDisplayerCreationListener():void
{
dataDisplayer.dataProvider = dataDisplayDP;
}
]]>>
</mx:Script>
<mx:DataGrid id="dataDisplayer" creationComplete="dataDisplayerCreationListener()">
<mx:DataGridColumn dataField="column0"/>
<mx:DataGridColumn dataField="column1"/>
<mx:DataGridColumn dataField="column2"/>
<mx:DataGridColumn dataField="column3"/>
</mx:DataGrid>
所以,再一次的想法是,每一行都表示dataProvider
中的一个项目,而每一列表示该行表示的对象的特定属性。起初,这种方法可能看起来很奇怪,但它允许您以表格格式直观地表示数据,而不必以表格格式构造数据。
您可以使用Array对象作为数据源,但通常最好将其包装在ArrayCollection对象中 - 当Collection对象用作数据源时,视图组件将在数据更改时自动更新。
同样,您不限制使用Array或ArrayCollection作为数据源。从Flex documentation on dataProvider
:
... [dataProvider属性]允许您使用大多数类型的对象作为数据提供者。如果将dataProvider属性设置为数组,则它将转换为ArrayCollection。如果将该属性设置为一个XML对象,它将仅转换为一个XMLListCollection,并且只有一个项目。如果您将该属性设置为XMLList,则它将转换为XMLListCollection。如果将该属性设置为实现IList或ICollectionView接口的对象,则该对象将直接使用。
顺便说一句,我很肯定如果你使用数组或XML对象,你不会得到自动更新视图的利益,即使他们将被转换成一个Collection对象。
如果您可以发布DataGrid的代码,它在回答您的问题时会非常有用。 – 2010-05-24 22:43:47