加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex 3 AdvancedDataGrid的使用(四)

发布时间:2020-12-15 01:13:20 所属栏目:百科 来源:网络整理
导读:显示分层XML数据 前面章节的示例中使用ArrayCollection来创建AdvancedDataGrid控件。您也可以使用分层XML数据来创建AdvancedDataGrid控件。以下示例修改前面章节的数据格式化为XML,然后将数据传递给AdvancedDataGrid控件: ?xml version = "1.0" encoding =
显示分层XML数据

前面章节的示例中使用ArrayCollection来创建AdvancedDataGrid控件。您也可以使用分层XML数据来创建AdvancedDataGrid控件。以下示例修改前面章节的数据格式化为XML,然后将数据传递给AdvancedDataGrid控件:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.HierarchicalData;
import mx.collections.XMLListCollection;
]]>

</mx:Script>
<mx:XMLList id="dpHierarchyXML" >
<Region Region="Southwest">
"Arizona">
<Territory_Rep Territory_Rep="Barbara Jennings"
Actual="38865" Estimate="40000"/>

"Dana Binn"
"29885" "30000"/>
</Region>
"Central California">
"Joe Smith"
"29134" "Nevada">
"Bethany Pittman"
"52888" "45000"/>
"Northern California">
"Lauren Ipsum"
"38805" "T.R. Smith"
"55498" "Southern California">
"Alice Treu"
"44985" "Jane Grove"
"44913" </mx:XMLList>
<mx:AdvancedDataGrid width="100%" height="100%"
dataProvider="{new HierarchicalData(dpHierarchyXML)}">

<mx:columns>
<mx:AdvancedDataGridColumn dataField="@Region"
headerText="Region"/>

"@Territory_Rep"
"Territory Rep"/>
"@Actual"
"Actual"/>
"@Estimate"
"Estimate"/>
</mx:columns>
</mx:AdvancedDataGrid>
</mx:Application>

运行示例

显示分组数据

分组数据是组织为同一层次以在AdvancedDataGrid控件中显示的扁平数据。要分组您的数据,您要指定一个更多的字段来将数据归集为同一层次下。

要使用分组数据来生成AdvancedDataGrid控件,您需要从您的扁平数据中创建一个GroupingCollection类的实例,然后将该GroupingCollection实例作为数据源传递给AdvancedDataGrid控件。当年从扁平数据创建一个GroupingCollection类的实例时,您需要指定数据中的那些字段用于创建层次。

本节中大部份示例使用如下扁平数据来创建GroupingCollection类的实例:

[Bindable]
private var dpFlat:ArrayCollection = new ArrayCollection([
{Region:"Southwest",Territory:"Arizona",
Territory_Rep:"Barbara Jennings",Actual:38865,Estimate:40000},
"Dana Binn",204)">29885,204)">30000"Central California",0)">"Joe Smith",204)">29134,0)">"Nevada",0)">"Bethany Pittman",204)">52888,204)">45000"Northern California",0)">"Lauren Ipsum",204)">38805,0)">"T.R. Smith",204)">55498,0)">"Southern California",0)">"Alice Treu",204)">44985,0)">"Jane Grove",204)">44913,102)">}
]);

以下示例使用该数据:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
include "SimpleFlatData.as"
]>
</mx:Script>
<mx:AdvancedDataGrid id="myADG"
width="100%" height="100%"
initialize="gc.refresh();">
<mx:dataProvider>
<mx:GroupingCollection id="gc" source="{dpFlat}">
<mx:grouping>
<mx:Grouping>
<mx:GroupingField name="Region"/>
<mx:GroupingField name="Territory"/>
</mx:Grouping>
</mx:grouping>
</mx:GroupingCollection>
</mx:dataProvider>
<mx:columns>
<mx:AdvancedDataGridColumn dataField="Region"/>
<mx:AdvancedDataGridColumn dataField="Territory"/>
<mx:AdvancedDataGridColumn dataField="Territory_Rep"
headerText="Territory Rep"/>
<mx:AdvancedDataGridColumn dataField="Actual"/>
<mx:AdvancedDataGridColumn dataField="Estimate"/>
</mx:columns>
</mx:AdvancedDataGrid>
</mx:Application>

运行示例

上面的示例中使用俩个字段来分组数据:Region和Territory。

GroupingCollection实例实际上基于这些字段重新格式化数据以作为GroupingCollection实例的内部数据表示,如下所示:

[{GroupLabel:   Territory_Rep:}]

注意该表示的为基于扁平数据的Region和Territory字段的数据分层结构,该GroupingCollection实例同样包含输入的扁平数据的原始行,但是这些行被基于分组字段组织为分层结构。缺省的被用来从扁平数据创建层次结构的数据字段名是GroupLabel。您可以使用Grouping.label属性来指定不同的名字。

AdvancedDataGrid控件使用GroupLabel字段定义导航树分支节点的标签。AdvancedDataGrid控件的第一列同样与Region字段相对应。所以导航树使用Region字段来定义树叶子节点的标签。

grouping属性是GroupingCollection类的缺省MXML属性,所以您可以如下重写前面的示例:

<![CDATA[
import mx.collections.ArrayCollection;
include "SimpleFlatData.as"
]]>

"myADG"
initialize="gc.refresh();">
<mx:dataProvider>
<mx:GroupingCollection "gc" source="{dpFlat}">
<mx:grouping>
<mx:GroupingField name="Territory"/>
</mx:grouping>
</mx:GroupingCollection>
</mx:dataProvider>
"Territory_Rep"
</mx:Application>

调用GroupingCollection.refresh()方法

GroupingCollection.refresh()方法将GroupingCollection类的设置应用到数据中。您必须在任何时候您通过设置GroupingCollection类的grouping、 source或summaries属性修改了GroupingCollection类时调用该方法。

为GroupLabel字段创建列

显示分组数据时可选地可以为分组字段生成的顶层条目创建一个单独列。例如,您使用Region和Territory字段来对扁平数据进行分组,这些字段被作为分支节点的标签显示在导航树上,所以您为这些列省去了单独的列,如下所示:

以下代码创建该示例。注意该示例为GroupLabel字段包含了一个AdvancedDataGridColumn实例。对于Region和Territory没有定义列:

<?xml version="SimpleFlatData.as";
"100%"
defaultLeafIcon="{null}"
initialize="{dpFlat}">
<mx:Grouping>
<mx:GroupingField name="Territory"/>
</mx:Grouping>
</mx:GroupingCollection>
</mx:dataProvider>
<mx:columns>
<mx:AdvancedDataGridColumn dataField="GroupLabel"
headerText="Region/Territory"/>
<mx:AdvancedDataGridColumn dataField="Estimate"/>
</mx:columns>
</mx:AdvancedDataGrid>
</mx:Application>

运行示例

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读