Я думаю, что вас сбивает с толку то, что вы не можете определить DataGrid
таким образом (по крайней мере, без большой адаптации). По сути, DataGrid
ожидает набор объектов, которые будут отображаться в виде набора строк.
Столбцы начинают играть как представления о конкретных свойствах данных объектов в dataProvider
. 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 документации по dataProvider
:
... [свойство dataProvider] позволяет использовать большинство типов объектов в качестве поставщиков данных. Если вы установите свойство dataProvider в Array, оно будет преобразовано в ArrayCollection. Если вы установите свойство для объекта XML, оно будет преобразовано в коллекцию XMLListCollection только с одним элементом. Если вы установите для свойства значение XMLList, оно будет преобразовано в коллекцию XMLListCollection. Если вы установите свойство для объекта, который реализует интерфейс IList или ICollectionView, объект будет использоваться напрямую.
Кстати, я довольно уверен, что вы не получите преимущества автоматического обновления представлений, если вы используете объект Array или XML, даже если они будут преобразованы в объект Collection.