Я пытался пример по этой ссылке: Adobe Flex 4 * Creating column groupsМожет AdvancedDataGrid автоматически обнаружить AdvancedDataGridColumnGroup
Данные
import mx.collections.ArrayCollection;
[Bindable]
private var dpHierarchy:ArrayCollection = new ArrayCollection([
{Region:"Southwest", Territory:"Arizona",
Territory_Rep:"Barbara Jennings",
Revenues:{Actual:38865, Estimate:40000}},
{Region:"Southwest", Territory:"Arizona",
Territory_Rep:"Dana Binn",
Revenues:{Actual:29885, Estimate:30000}},
{Region:"Southwest", Territory:"Central California",
Territory_Rep:"Joe Smith",
Revenues:{Actual:29134, Estimate:30000}},
{Region:"Southwest", Territory:"Nevada",
Territory_Rep:"Bethany Pittman",
Revenues:{Actual:52888, Estimate:45000}},
{Region:"Southwest", Territory:"Northern California",
Territory_Rep:"Lauren Ipsum",
Revenues:{Actual:38805, Estimate:40000}},
{Region:"Southwest", Territory:"Northern California",
Territory_Rep:"T.R. Smith",
Revenues:{Actual:55498, Estimate:40000}},
{Region:"Southwest", Territory:"Southern California",
Territory_Rep:"Alice Treu",
Revenues:{Actual:44985, Estimate:45000}},
{Region:"Southwest", Territory:"Southern California",
Territory_Rep:"Jane Grove",
Revenues:{Actual:44913, Estimate:45000}}
]);
<?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
// Import the data used by the AdvancedDataGrid control.
include "SimpleFlatData.as";
]]>
</fx:Script>
<mx:AdvancedDataGrid id="myADG"
dataProvider="{dpFlat}"
width="100%" height="100%">
<mx:groupedColumns>
<mx:AdvancedDataGridColumn dataField="Region"/>
<mx:AdvancedDataGridColumn dataField="Territory"/>
<mx:AdvancedDataGridColumn dataField="Territory_Rep"
headerText="Territory Rep"/>
<mx:AdvancedDataGridColumnGroup headerText="Revenues">
<mx:AdvancedDataGridColumn dataField="Actual"/>
<mx:AdvancedDataGridColumn dataField="Estimate"/>
</mx:AdvancedDataGridColumnGroup>
</mx:groupedColumns>
</mx:AdvancedDataGrid>
</s:Application>
Здесь мы должны определить AdvancedDataGridColumnGroup
, чтобы определить сгруппированных столбцов.
Я пытался, если AdvancedDataGrid может автоматически определять столбцы на основе данных JSON. Я попытался с помощью следующего кода:
<mx:AdvancedDataGrid id="inboxDg"
designViewDataType="flat"
editable="true"
dataProvider="{dpHierarchy}"
width="100%" height="100%">
</mx:AdvancedDataGrid>
Используя этот код, AdvancedDataGrid автоматически определяет имена столбцов и данных. Но он не создает вложенные столбцы для Revenues
. В идеале он должен создать 2 подстолбцы для него как Actual
и Estimate
, но он создал только один столбец и данные показывают, как [object Object]
Есть ли способ сделать AdvancedDataGrid автоматически создавать вложенные столбцы?
Спасибо за ваш ответ. Но проблема в том, что данные будут созданы с использованием другой системы, и будет решено, что она будет вложенном формате. Таким образом, создание плоской модели не может быть и речи. :(Можем ли мы модифицировать AdvancedDataGrid таким образом, чтобы он интерпретировал вложенный * объект * как вложенный столбец? – Garbage
Даже если данные создаются с использованием другой системы, это не значит, что вы не можете ее интерпретировать и добавить к данным модель по вашему выбору. Если это кажется слишком большой работой, вы всегда можете заглянуть в [labelFunctions] (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.html #labelFunction) или даже использовать пользовательские [рендеринги элементов] (http://help.adobe.com/en_US/flex/using/WS03d33b8076db57b9-23c04461124bbeca597-8000.html) –