Apache flex AdvancedDataGrid能否自动检测AdvancedDataGridColumnGroup
我正在尝试这个链接中的示例: 数据是Apache flex AdvancedDataGrid能否自动检测AdvancedDataGridColumnGroup,apache-flex,flex4,advanceddatagrid,Apache Flex,Flex4,Advanceddatagrid,我正在尝试这个链接中的示例: 数据是 import mx.collections.ArrayCollection; [Bindable] private var dpHierarchy:ArrayCollection = new ArrayCollection([ {Region:"Southwest", Territory:"Arizona", Territory_Rep:
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>
使用此代码,AdvancedDataGrid会自动检测列名和数据。但它无法为收入
创建嵌套列。理想情况下,它应该为它创建两个子列,分别为Actual
和Estimate
,但它只创建了一列,数据显示为[object]
有没有办法让AdvancedDataGrid自动创建嵌套列?您的数据不是扁平的,仅仅因为您将其放入一个组并不意味着它将对其进行分组。dataField属性不能在其中使用点表示法,因此您有两个选项,使用labelFunction属性或创建平面数据模型(我个人更喜欢后者) 为此:
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....
]);
然后是您的网格:
<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>
如果愿意,您也可以使用labelFunction进行查找,但这似乎比需要的更复杂。最后,我觉得我应该注意,您应该在列上手动设置label属性,并遵守数据的编码标准(camelCase)。这只会让事情变得更干净:)谢谢你的回复。但问题是,数据将使用另一个系统创建,并决定采用嵌套格式。因此,创建平面模型是毫无疑问的(我们是否可以修改AdvancedDataGrid,使其将嵌套对象解释为嵌套列?即使数据是使用其他系统创建的,也不意味着您不能解释它并将其添加到您选择的数据模型中。如果这似乎太多工作,您可以随时查看或甚至使用自定义列。)
<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>