/ / Kann AdvancedDataGrid AdvancedDataGridColumnGroup - flex, flex4, advanceddatagrid automatisch erkennen

Kann AdvancedDataGrid AdvancedDataGridColumnGroup automatisch erkennen - flex, flex4, advanceddatagrid

Ich habe das Beispiel aus diesem Link ausprobiert: Adobe Flex 4 * Erstellen von Spaltengruppen

Die Daten sind

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>

Hier müssen wir das definieren AdvancedDataGridColumnGroup um die gruppierten Spalten zu definieren.

Ich habe versucht, ob AdvancedDataGrid die Spalten basierend auf den JSON-Daten automatisch erkennen kann. Ich habe mit folgendem Code versucht:

<mx:AdvancedDataGrid id="inboxDg"
designViewDataType="flat"
editable="true"
dataProvider="{dpHierarchy}"
width="100%" height="100%">

</mx:AdvancedDataGrid>

Mit diesem Code erkennt AdvancedDataGrid automatisch die Spaltennamen und die Daten. Es können jedoch keine geschachtelten Spalten für erstellt werden Revenues. Im Idealfall sollte es zwei Unterspalten erstellen Actual und Estimate, erstellt aber nur eine Spalte und zeigt die Daten als [object Object] AdvancedDataGrid mit automatisch erkannten Spalten

Gibt es eine Möglichkeit, AdvancedDataGrid so zu erstellen, dass die geschachtelten Spalten automatisch erstellt werden?

Antworten:

2 für die Antwort № 1

Ihre Daten sind nicht flach, und nur weil Sie sie ablegenIn einer Gruppe bedeutet dies nicht, dass es eine Untergruppe darstellt. Die Eigenschaft dataField kann keine Punktnotation verwenden. Sie haben also zwei Optionen, die Eigenschaft labelFunction oder ein flaches Datenmodell (ich persönlich bevorzuge letzteres).

Um dies zu tun:

private var dpHierarchy:ArrayCollection = new ArrayCollection([
{Region:"Southwest", Territory:"Arizona",
Territory_Rep:"Barbara Jennings",
ActualRevenue:38865,
EstimateRevenue:40000},
{Region:"Southwest", Territory:"Arizona",
Territory_Rep:"Dana Binn",
ActualRevenue:38865,
EstimateRevenue:40000},
{Region:"Southwest", Territory:"Central California",
Territory_Rep:"Joe Smith",
ActualRevenue:38865,
EstimateRevenue:40000},
etc....
]);

Und dann dein Raster:

<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="ActualRevenue"/>
<mx:AdvancedDataGridColumn dataField="EstimateRevenue"/>
</mx:AdvancedDataGridColumnGroup>
</mx:groupedColumns>
</mx:AdvancedDataGrid>

Sie können auch mit einer labelFunction nachschlagen, wennSie möchten, aber das schien komplexer zu sein, als es sein muss. Und zum Schluss sollte ich beachten, dass Sie die label -Eigenschaft manuell in Ihre Spalten setzen und die Kodierungsstandards für Ihre Daten (camelCase) einhalten müssen. Es macht einfach Dinge ein bisschen sauberer :)