<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>AllSprite</title>
	<atom:link href="http://www.allsprite.com/wp-feed.php" rel="self" type="application/rss+xml" />
	<link>http://www.allsprite.com</link>
	<description></description>
	<pubDate>Wed, 29 Oct 2008 09:54:12 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Flex Builder 3.0 plugin 在 Zend 中的安装</title>
		<link>http://www.allsprite.com/?p=183</link>
		<comments>http://www.allsprite.com/?p=183#comments</comments>
		<pubDate>Wed, 29 Oct 2008 09:54:12 +0000</pubDate>
		<dc:creator>sprite</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://www.allsprite.com/?p=183</guid>
		<description><![CDATA[一.首先下载Zend 6.0 并安装Zend 6.0 安装到 D:\Program Files\Zend\Zend Studio for Eclipse - 6.0.0.
二.下载安装Flex Builder 3.0
http://trials.adobe.com/Applicat &#8230; FB3_WWEJ_Plugin.exe
1. 指定把 Flex Builder 3.0安装在 D:\Program Fi... ]]></description>
			<content:encoded><![CDATA[<p>一.首先下载Zend 6.0 并安装Zend 6.0 安装到 D:\Program Files\Zend\Zend Studio for Eclipse - 6.0.0.<br />
二.下载安装Flex Builder 3.0<br />
http://trials.adobe.com/Applicat &#8230; FB3_WWEJ_Plugin.exe<br />
1. 指定把 Flex Builder 3.0安装在 D:\Program Files\Adobe\Flex Builder 3 Plug-in\,<br />
2. 指定 Eclipse 安装路径为 D:\Program Files\Zend\Zend Studio for Eclipse - 6.0.0.<br />
3. 选择是否安装浏览器 Flash Plyer 9 插件(可选安装)<br />
等安装完后运行 zend 你是看不到 Flex的.这是因为我们还有很多事项没有做 请看下面：<br />
三. Flex Builder 中的文件配置<br />
1. 把D:\Program Files\Adobe\Flex Builder 3 Plug-in\com.adobe.flexbuilder.update.site\下的 plugins、features、site.xml<br />
复制到 D:\Program Files\Zend\Zend Studio for Eclipse - 6.0.0. (不管村不存在plugins、features文件的话，在粘贴之后他们会自动合并的  .)<br />
2. 把D:\Program Files\Adobe\Flex Builder 3 Plug-in\eclipse\下的 plugins、features(如果有的话,这是Eclipse的一些更新)<br />
复制到 D:\Program Files\Zend\Zend Studio for Eclipse - 6.0.0.<br />
3. 把D:\Program Files\Adobe\Flex Builder 3 Plug-in\sdks 复制到D:\Program Files\Zend\Zend Studio for Eclipse - 6.0.0.<br />
此时已经把Flex安装文件中的配置工作做好了 ，下面作Zend的修改<br />
4. 进行在Zend中修改Flex的SDK的配置.<br />
打开Zend中.</p>
<p>点击-&gt;Window-&gt;Preferences-&gt;Flex-&gt;Installed Flex SDKs<br />
修改Flex SDKs 2.0 和 Flex SDKs 3.0的路径点Apply让设置成效.<br />
此时就已经OK了你只需要重启Eclipse..就可以开发Flex了.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.allsprite.com/?feed=rss2&amp;p=183</wfw:commentRss>
		</item>
		<item>
		<title>让Dreamweaver识别CTP文件</title>
		<link>http://www.allsprite.com/?p=181</link>
		<comments>http://www.allsprite.com/?p=181#comments</comments>
		<pubDate>Thu, 25 Sep 2008 04:01:36 +0000</pubDate>
		<dc:creator>sprite</dc:creator>
		
		<category><![CDATA[Web开发]]></category>

		<category><![CDATA[杂七杂八]]></category>

		<category><![CDATA[Adobe]]></category>

		<category><![CDATA[Dreamweaver]]></category>

		<category><![CDATA[扩展名识别]]></category>

		<guid isPermaLink="false">http://www.allsprite.com/?p=181</guid>
		<description><![CDATA[
Dreamweaver默认打开后缀名为ctp的文件时，设计视图显示灰色，无法直接预览ctp文件样式；需要进行以下修改：1、便Dreamweaver能识别*.ctp文件，并当做html页面来处理，需要修改两个文件，(1)Extensio... ]]></description>
			<content:encoded><![CDATA[<p>
<p>Dreamweaver默认打开后缀名为ctp的文件时，设计视图显示灰色，无法直接预览ctp文件样式；<br />需要进行以下修改：<br />1、便Dreamweaver能识别*.ctp文件，并当做html页面来处理，需要修改两个文件，<br />(1)Extensions.txt&#8212;&#8212;位于你的用户目录下，如 C:\Documents and Settings\Administrator\Application Data\Adobe\Dreamweaver 9\Configuration\<br />(2)MMDocumentTypes.xml&#8212;-位于程序安装目录下，如D:\Program Files\Adobe\Adobe Dreamweaver CS3\configuration\DocumentTypes\<br />2、用编辑器打开MMDocumentTypes.xml，找到下面部分，并添加ctp，修改后如下：<br />&lt;documenttype id=&#8221;PHP_MySQL&#8221; servermodel=&#8221;PHP MySQL\&#8221; internaltype=&#8221;Dynamic&#8221; winfileextension=&#8221;php,php3,php4,php5,ctp&#8221; macfileextension=&#8221;php,php3,php4,php5,ctp&#8221; file=&#8221;Default.php&#8221; writebyteordermark=&#8221;false&#8221;&gt;<br />保存退出。winfileextension指的是在windows系统中的扩展，macfileextension是mac os系统中的扩展<br />需要注意的是，在同目录下和用户目录下，不能有同名文件，包括备份文件，否则在启动时会有“php已经被关联。。。”等警告信息。<br />经过这样设置，DW就可以识别*.ctp文件，并当作*.php来处</p>
]]></content:encoded>
			<wfw:commentRss>http://www.allsprite.com/?feed=rss2&amp;p=181</wfw:commentRss>
		</item>
		<item>
		<title>CSS 在Safari下不能import的解决</title>
		<link>http://www.allsprite.com/?p=180</link>
		<comments>http://www.allsprite.com/?p=180#comments</comments>
		<pubDate>Fri, 12 Sep 2008 06:59:18 +0000</pubDate>
		<dc:creator>sprite</dc:creator>
		
		<category><![CDATA[Web开发]]></category>

		<category><![CDATA[chrome]]></category>

		<category><![CDATA[CSS]]></category>

		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://www.allsprite.com/?p=180</guid>
		<description><![CDATA[出错原因，
css页面里面不能有 @charset &#8220;utf-8&#8243;;
这段代码在萨法日下不能够被识别... ]]></description>
			<content:encoded><![CDATA[<p>出错原因，</p>
<p>css页面里面不能有 @charset &#8220;utf-8&#8243;;</p>
<p>这段代码在萨法日下不能够被识别</p>
]]></content:encoded>
			<wfw:commentRss>http://www.allsprite.com/?feed=rss2&amp;p=180</wfw:commentRss>
		</item>
		<item>
		<title>ssp与wordpress图片关联测试</title>
		<link>http://www.allsprite.com/?p=176</link>
		<comments>http://www.allsprite.com/?p=176#comments</comments>
		<pubDate>Wed, 10 Sep 2008 05:21:04 +0000</pubDate>
		<dc:creator>sprite</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.allsprite.com/?p=176</guid>
		<description><![CDATA[... ]]></description>
			<content:encoded><![CDATA[<p><a href="http:///ssp.allsprite.com/albums/album-4/lg/img_7822.jpg" onclick="javascript:pageTracker._trackPageview ('/outbound/');" rel="lightbox"><img class="alignnone size-medium wp-image-177" title="img_7822" src="http:///ssp.allsprite.com/albums/album-4/lg/img_7822-300x225.jpg" alt="" width="300" height="225" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.allsprite.com/?feed=rss2&amp;p=176</wfw:commentRss>
		</item>
		<item>
		<title>FLEX3体验：:AdvancedDataGrid的使用(第四部分)</title>
		<link>http://www.allsprite.com/?p=163</link>
		<comments>http://www.allsprite.com/?p=163#comments</comments>
		<pubDate>Wed, 13 Aug 2008 09:55:06 +0000</pubDate>
		<dc:creator>sprite</dc:creator>
		
		<category><![CDATA[交互设计]]></category>

		<category><![CDATA[AdvancedDataGrid]]></category>

		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.allsprite.com/?p=163</guid>
		<description><![CDATA[这几天有点事忙了一阵 遇到个棘手的问题 FLASH载入PHP处理后的变量，用嵌入字体看不见 只能用默认的，用trace扑捉也可以得到变量 就是不能显示 郁闷。
继续第三部分
在 AdvancedDataGrid中使用条... ]]></description>
			<content:encoded><![CDATA[<p>这几天有点事忙了一阵 遇到个棘手的问题 FLASH载入PHP处理后的变量，用嵌入字体看不见 只能用默认的，用trace扑捉也可以得到变量 就是不能显示 郁闷。<br />
继续第三部分<br />
在 AdvancedDataGrid中使用条目渲染器(item renderers)，您可以通过创建自定义的条目渲染器(item renderers)或者条目编辑器(item editors)来定制AdvancedDataGrid中单元格的外观和行为。与DataGrid处理的方法类似，我们直接将条目渲染器(item renderers)或者条目编辑器(item editors)赋值给AdvancedDataGrid的列就可以了。关于 item renderers 和 item editors的更多介绍，请查看：<a href="http://livedocs.adobe.com/flex/3/html/index.html#145838" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/livedocs.adobe.com');">Using Item Renderers and Item Editors</a><br />
AdvancedDataGrid在对于项目渲染器的支持上增加了一些新的特性，这些新的特性可以让您处理下面的操作：</p>
<p>    * 创建非关联数据源数据的行或列。例如，您可以从数据源创建汇总行。<br />
    * 一个渲染器跨越多个列。<br />
    * 单列使用多个渲染器。例如，当显示分层数据时，基于分层中的级别同一列使用不同的渲染器。</p>
<p>注意：这些新的特性只支持项目渲染器；项目编辑器的用法和DataGrid中的用法相同。</p>
<p>使用项目渲染器</p>
<p>要使用AdvancedDataGrid控件中新的项目渲染器特性，您需要直接使用 AdvancedDataGrid.rendererProviders属性将项目渲染器指定给AdvancedDataGrid控件本身，而不是像 DataGrid中，指定给特定列。下面的示例中指定一个项目渲染器给Estimate列：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;mx:AdvancedDataGrid&gt;<br />
    &lt;mx:columns&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
            headerText=&#8221;Territory Rep&#8221;/&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
    &lt;/mx:columns&gt;</p>
<p>    &lt;mx:rendererProviders&gt;<br />
        &lt;mx:AdvancedDataGridRendererProvider<br />
            columnIndex=&#8221;3&#8243;<br />
            columnSpan=&#8221;1&#8243;<br />
            renderer=&#8221;myComponents.EstimateRenderer&#8221;/&gt;<br />
    &lt;/mx:rendererProviders&gt;<br />
&lt;/mx:AdvancedDataGrid&gt;</p></div>
</div>
<p>rendererProviders属性包含一个AdvancedDataGridRendererProvider实例数组。每个AdvancedDataGridRendererProvider实例定义一个项目渲染器个特性。</p>
<p>在前面的示例中，AdvancedDataGridRendererProvider实例表示，对于第3列使用 EstimateRenderer，AdvancedDataGrid控件中的首列是列0，并且该渲染器跨越单列。如果您将columnSpan属性设置为0，该渲染器将横跨行的所有列。</p>
<p>不但可以将列索引指定渲染器，您还可以给某列指定一个id属性，然后将该列属性来将该列与渲染器关联。如下所示：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;mx:AdvancedDataGrid&gt;<br />
    &lt;mx:columns&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
            headerText=&#8221;Territory Rep&#8221;/&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
        &lt;mx:AdvancedDataGridColumn id=&#8221;estCol&#8221; dataField=&#8221;Estimate&#8221;/&gt;<br />
    &lt;/mx:columns&gt;</p>
<p>    &lt;mx:rendererProviders&gt;<br />
        &lt;mx:AdvancedDataGridRendererProvider<br />
            column=&#8221;{estCol}&#8221;<br />
            columnSpan=&#8221;1&#8243;<br />
            renderer=&#8221;myComponents.EstimateRenderer&#8221;/&gt;<br />
    &lt;/mx:rendererProviders&gt;<br />
&lt;/mx:AdvancedDataGrid&gt;</p></div>
</div>
<p>depth属性使得您可以将渲染器与AdvancedDataGrid控件的导航树层次结构中的特定层次关联，导航树的最顶级depth为1。下面示例将渲染器与导航树第三层关联：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;mx:rendererProviders&gt;<br />
        &lt;mx:AdvancedDataGridRendererProvider<br />
            columnIndex=&#8221;3&#8243;<br />
            depth=&#8221;3&#8243;<br />
            columnSpan=&#8221;1&#8243;<br />
            renderer=&#8221;myComponents.EstimateRenderer&#8221;/&gt;<br />
&lt;/mx:rendererProviders&gt;</div>
</div>
<p>在前面的示例中，AdvancedDataGrid控件将一直使用缺省的列渲染器直到您将导航树展开到第三层，这时候它才使用EstimateRenderer组件。您可以使用depth属性为同一列指定不同的渲染器，在depth属性指定树的每个层次使用的渲染器。</p>
<p>一个渲染器可以跨越多个列。在下面的示例中，您创建了一个横跨两列的渲染器：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;mx:AdvancedDataGrid&gt;<br />
    &lt;mx:columns&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
            headerText=&#8221;Territory Rep&#8221;/&gt;<br />
        &lt;mx:AdvancedDataGridColumn id=&#8221;actCol&#8221; dataField=&#8221;Actual&#8221;/&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
    &lt;/mx:columns&gt;</p>
<p>    &lt;mx:rendererProviders&gt;<br />
        &lt;mx:AdvancedDataGridRendererProvider<br />
            column=&#8221;{actCol}&#8221;<br />
            depth=&#8221;3&#8243;<br />
            columnSpan=&#8221;2&#8243;<br />
            renderer=&#8221;myComponents.SummaryRenderer&#8221;/&gt;<br />
    &lt;/mx:rendererProviders&gt;<br />
&lt;/mx:AdvancedDataGrid&gt;</p></div>
</div>
<p>前面示例使用单个渲染器跨越Actual和Estimate列来显示一个这些列数据的组合视图。要查看SummaryRenderer组件的某个实现，请查看“使用渲染器生成列数据”。</p>
<p>下表是AdvancedDataGridRendererProvider类中您可以用来配置渲染器的属性的描述：<br />
<strong>属性                         描述<br />
column                          使用渲染器的列的ID。如果您省略该属性，您可以使用columnIndex 属性来标识列。<br />
columnIndex                使用渲染器的列索引，第一列的索引为0。<br />
columnSpan               渲染器跨越的列数目。设置该属性为0表示横跨所有的列。缺省值为1。<br />
dataField                  给渲染器使用的数据源中的数据字段。该属性可选。<br />
depth                         在树的哪个深度使用渲染器，树的最顶级节点的深度为1。当只在树被展开到特定深度 而不是在树中所有的节点使用渲染器时使用该属性。缺省情况下，该控件在树的所有级别使用渲染器。<br />
renderer               渲染器。<br />
rowSpan             渲染器跨越的行数，缺省值为1。 </strong></p>
<p>使用渲染器生成列数据</p>
<p>下面示例使用一个项目渲染器来计算AdvancedDataGrid控件列的差额，如下图片所示：</p>
<p><a href="http://blog.eshangrao.com/images/flex/moxie/adgRenderer.jpg" title="在新窗口打开图片" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/blog.eshangrao.com');" rel="lightbox"><img style="cursor: pointer;" title="在新窗口打开图片" src="http://blog.eshangrao.com/images/flex/moxie/adgRenderer.jpg" border="0" alt="" width="550" /></a><br />
该示例定义了id为diffCol的列，该列不和数据源的任意数据字段关联。相应的，您使用rendererProvider 属性给列指定一个项目渲染器。该项目渲染器计算actual和estimate的差值，并将接着显示一个是否超过预算的消息。</p>
<p>下面的代码实现该示例：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8220;&gt;</p>
<p>    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
              import mx.collections.ArrayCollection;<br />
                <br />
              include "SimpleHierarchicalData.as";<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;</p>
<p>    &lt;mx:AdvancedDataGrid width=&#8221;100%&#8221; height=&#8221;100%&#8221;&gt;<br />
        &lt;mx:dataProvider&gt;<br />
            &lt;mx:HierarchicalData source=&#8221;{dpHierarchy}&#8221;/&gt;<br />
        &lt;/mx:dataProvider&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn id=&#8221;diffCol&#8221;<br />
                headerText=&#8221;Difference&#8221;/&gt;<br />
        &lt;/mx:columns&gt;</p>
<p>        &lt;mx:rendererProviders&gt;<br />
            &lt;mx:AdvancedDataGridRendererProvider column=&#8221;{diffCol}&#8221;<br />
                depth=&#8221;3&#8243; renderer=&#8221;myComponents.SummaryRenderer&#8221;/&gt;<br />
        &lt;/mx:rendererProviders&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</p></div>
</div>
<p>以下是SummaryRenderer组件的代码：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;!&#8211; myComponents/SummaryRenderer.mxml &#8211;&gt;<br />
&lt;mx:Label xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8221; textAlign=&#8221;center&#8221;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[</p>
<p>        override public function set data(value:Object):void<br />
        {<br />
            // Calculate the difference.<br />
            var diff:Number =<br />
                Number(value["Actual"]) - Number(value["Estimate"]);<br />
            if (diff &lt; 0)<br />
            {<br />
                // If Estimate was greater than Actual,<br />
                // display results in red.<br />
                setStyle(&#8221;color&#8221;, &#8220;red&#8221;);<br />
                text = &#8220;Undersold by &#8221; + usdFormatter.format(diff);<br />
            }<br />
            else<br />
            {<br />
                // If Estimate was less than Actual,<br />
                // display results in green.<br />
                setStyle(&#8221;color&#8221;, &#8220;green&#8221;);<br />
                text = &#8220;Exceeded estimate by &#8221; + usdFormatter.format(diff);<br />
            }<br />
        }<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    <br />
    &lt;mx:CurrencyFormatter id=&#8221;usdFormatter&#8221; precision=&#8221;2&#8243;<br />
        currencySymbol=&#8221;$&#8221; decimalSeparatorFrom=&#8221;.&#8221;<br />
        decimalSeparatorTo=&#8221;.&#8221; useNegativeSign=&#8221;true&#8221;<br />
        useThousandsSeparator=&#8221;true&#8221; alignSymbol=&#8221;left&#8221;/&gt;<br />
&lt;/mx:Label&gt;</p></div>
</div>
<p><a href="http://%3ca%20href=/" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/%3ca%20href=');">运行睇下效果先</a><br />
使用横跨整行的项目渲染器</p>
<p>您可以在一个分层数据上使用某一项目渲染器设置其显示整行数据。下面示例是一个PieChart（饼图）控件来显示分层数据中的detail字段数据。每行包含的detail信息是各个代表的销售收入信息，下面是其中一个显示图表：</p>
<p>img</p>
<p>以下代码实现该示例：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;!&#8211; dpcontrols/adg/GroupADGChartRenderer.mxml &#8211;&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8220;&gt;</p>
<p>  &lt;mx:Script&gt;<br />
    &lt;![CDATA[<br />
      import mx.collections.ArrayCollection;<br />
                            <br />
      [Bindable]<br />
      private var dpHierarchy:ArrayCollection= new ArrayCollection([<br />
        {name:"Barbara Jennings", region: "Arizona", total:70, children:[  <br />
          {detail:[{amount:5},{amount:10},{amount:20},{amount:45}]}]},<br />
        {name:&#8221;Dana Binn&#8221;, region: &#8220;Arizona&#8221;, total:130,  children:[<br />
          {detail:[{amount:15},{amount:25},{amount:35},{amount:55}]}]},<br />
        {name:&#8221;Joe Smith&#8221;, region: &#8220;California&#8221;, total:229,  children:[<br />
          {detail:[{amount:26},{amount:32},{amount:73},{amount:123}]}]},<br />
        {name:&#8221;Alice Treu&#8221;, region: &#8220;California&#8221;, total:230, children:[<br />
          {detail:[{amount:159},{amount:235},{amount:135},{amount:155}]}<br />
        ]}<br />
      ]);                                            <br />
    ]]&gt;<br />
  &lt;/mx:Script&gt;</p>
<p>  &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />
    width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
    variableRowHeight=&#8221;true&#8221;&gt;<br />
    &lt;mx:dataProvider&gt;<br />
       &lt;mx:HierarchicalData source=&#8221;{dpHierarchy}&#8221;/&gt;<br />
    &lt;/mx:dataProvider&gt;<br />
    &lt;mx:columns&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;name&#8221; headerText=&#8221;Name&#8221;/&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;total&#8221; headerText=&#8221;Total&#8221;/&gt;<br />
    &lt;/mx:columns&gt;  <br />
        <br />
    &lt;mx:rendererProviders&gt;            <br />
        &lt;mx:AdvancedDataGridRendererProvider<br />
            dataField=&#8221;detail&#8221;<br />
            renderer=&#8221;myComponents.ChartRenderer&#8221;<br />
            columnIndex=&#8221;0&#8243;<br />
            columnSpan=&#8221;0&#8243;/&gt;        <br />
    &lt;/mx:rendererProviders&gt;  <br />
  &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</p></div>
</div>
<p>您可以修改该示例以在单列中显示PieChart控件。在下面的例子中，增加了一个Detail列给该控件，然后将该控件指定为第2列的项目渲染器：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;!&#8211; dpcontrols/adg/GroupADGChartRendererOneRow.mxml &#8211;&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8220;&gt;</p>
<p>  &lt;mx:Script&gt;<br />
    &lt;![CDATA[<br />
      import mx.collections.ArrayCollection;<br />
                            <br />
      [Bindable]<br />
      private var dpHierarchy:ArrayCollection= new ArrayCollection([<br />
        {name:"Barbara Jennings", region: "Arizona", total:70, children:[  <br />
          {detail:[{amount:5},{amount:10},{amount:20},{amount:45}]}]},<br />
        {name:&#8221;Dana Binn&#8221;, region: &#8220;Arizona&#8221;, total:130,  children:[<br />
          {detail:[{amount:15},{amount:25},{amount:35},{amount:55}]}]},<br />
        {name:&#8221;Joe Smith&#8221;, region: &#8220;California&#8221;, total:229,  children:[<br />
          {detail:[{amount:26},{amount:32},{amount:73},{amount:123}]}]},<br />
        {name:&#8221;Alice Treu&#8221;, region: &#8220;California&#8221;, total:230, children:[<br />
          {detail:[{amount:159},{amount:235},{amount:135},{amount:155}]}<br />
        ]}<br />
      ]);                                            <br />
    ]]&gt;<br />
  &lt;/mx:Script&gt;</p>
<p>  &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />
    width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
    variableRowHeight=&#8221;true&#8221;&gt;<br />
    &lt;mx:dataProvider&gt;<br />
       &lt;mx:HierarchicalData source=&#8221;{dpHierarchy}&#8221;/&gt;<br />
    &lt;/mx:dataProvider&gt;<br />
    &lt;mx:columns&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;name&#8221; headerText=&#8221;Name&#8221;/&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;total&#8221; headerText=&#8221;Total&#8221;/&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;detail&#8221; headerText=&#8221;Detail&#8221;/&gt;<br />
    &lt;/mx:columns&gt;  <br />
        <br />
    &lt;mx:rendererProviders&gt;            <br />
        &lt;mx:AdvancedDataGridRendererProvider<br />
            dataField=&#8221;detail&#8221;<br />
            renderer=&#8221;myComponents.ChartRenderer&#8221;<br />
            columnIndex=&#8221;2&#8243;/&gt;        <br />
    &lt;/mx:rendererProviders&gt;  <br />
  &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</p></div>
</div>
<p>《AdvancedDataGrid的使用》到此完成。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.allsprite.com/?feed=rss2&amp;p=163</wfw:commentRss>
		</item>
		<item>
		<title>FLEX3体验：:AdvancedDataGrid的使用(第三部分）</title>
		<link>http://www.allsprite.com/?p=161</link>
		<comments>http://www.allsprite.com/?p=161#comments</comments>
		<pubDate>Wed, 13 Aug 2008 09:51:34 +0000</pubDate>
		<dc:creator>sprite</dc:creator>
		
		<category><![CDATA[交互设计]]></category>

		<category><![CDATA[AdvancedDataGrid]]></category>

		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.allsprite.com/?p=161</guid>
		<description><![CDATA[几天没去feiy空间了  继续第二部分，我们继续来跟着feiy学AdvancedDataGrid的使用。
创建汇总行
您可以使用GroupingField类的summaries属性来创建分组数据的汇总数据，然后您可以将汇总数据与原来数... ]]></description>
			<content:encoded><![CDATA[<p>几天没去feiy空间了  继续第二部分，我们继续来跟着feiy学AdvancedDataGrid的使用。</p>
<p>创建汇总行</p>
<p>您可以使用GroupingField类的summaries属性来创建分组数据的汇总数据，然后您可以将汇总数据与原来数据显示同一行中，也可以将其显示在单独一行中。</p>
<p>以下示例中，AdvancedDataGrid控件显示了两个汇总字段，Min Actual和Max Actual：<br />
<a href="http://blog.eshangrao.com/images/flex/moxie/sumDg.jpg" title="在新窗口打开图片" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/blog.eshangrao.com');" rel="lightbox"><img style="cursor: pointer;" title="在新窗口打开图片" src="http://blog.eshangrao.com/images/flex/moxie/sumDg.jpg" border="0" alt="" width="550" /></a><br />
顶部行的Min Actual和Max Actual字段对应分组中所有行的汇总，而每个Territory的Min Actual和Max Actual字段对应该Territory子组中所有行的汇总。</p>
<p>以下是实际代码：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8220;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "SimpleFlatData.as"<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />
        width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
        initialize=&#8221;gc.refresh();&#8221;&gt;<br />
        &lt;mx:dataProvider&gt;<br />
            &lt;mx:GroupingCollection id=&#8221;gc&#8221; source=&#8221;{dpFlat}&#8221;&gt;<br />
                &lt;mx:Grouping&gt;<br />
                    &lt;mx:GroupingField name=&#8221;Region&#8221;&gt;<br />
                        &lt;mx:summaries&gt;<br />
                            &lt;mx:SummaryRow summaryPlacement=&#8221;group&#8221;&gt;<br />
                                &lt;mx:fields&gt;<br />
                                    &lt;mx:SummaryField dataField=&#8221;Actual&#8221;<br />
                                        label=&#8221;Min Actual&#8221; operation=&#8221;MIN&#8221;/&gt;<br />
                                    &lt;mx:SummaryField dataField=&#8221;Actual&#8221;<br />
                                        label=&#8221;Max Actual&#8221; operation=&#8221;MAX&#8221;/&gt;<br />
                                &lt;/mx:fields&gt;<br />
                            &lt;/mx:SummaryRow&gt;<br />
                        &lt;/mx:summaries&gt;<br />
                    &lt;/mx:GroupingField&gt;<br />
                    &lt;mx:GroupingField name=&#8221;Territory&#8221;&gt;<br />
                        &lt;mx:summaries&gt;<br />
                            &lt;mx:SummaryRow summaryPlacement=&#8221;group&#8221;&gt;<br />
                                &lt;mx:fields&gt;<br />
                                    &lt;mx:SummaryField dataField=&#8221;Actual&#8221;<br />
                                        label=&#8221;Min Actual&#8221; operation=&#8221;MIN&#8221;/&gt;<br />
                                    &lt;mx:SummaryField dataField=&#8221;Actual&#8221;<br />
                                        label=&#8221;Max Actual&#8221; operation=&#8221;MAX&#8221;/&gt;<br />
                                &lt;/mx:fields&gt;<br />
                            &lt;/mx:SummaryRow&gt;<br />
                        &lt;/mx:summaries&gt;<br />
                    &lt;/mx:GroupingField&gt;<br />
                &lt;/mx:Grouping&gt;<br />
            &lt;/mx:GroupingCollection&gt;<br />
        &lt;/mx:dataProvider&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Min Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Max Actual&#8221;/&gt;<br />
        &lt;/mx:columns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</div>
</div>
<p><a href="http://labs.eshangrao.com/flex/3/adg/SummaryGroupADG.swf" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');">运行例子看看</a><br />
注意在该示例中，我们将GroupingField.summaries属性指定为SummaryRow实例。SummaryRow包含数据汇总的所有信息。例如，我们使用SummaryRow的summaryPlacement属性来将汇总数据添加到分组数据中。可选的，您也可以增加一个新行来存放汇总数据。更多信息请查看“指定汇总数据存放位置“。</p>
<p>每个SummaryRow实例指定一个或多个用来创建数据汇总的SummayField 实例。例如，您可以使用SummayField的dataField属性来指定对Actual数据字段进行汇总,label属性用于指明存放汇总数据的数据字段的名称，而operation属性用于指定如何对数值字段几行汇总，您可以使用以下任一值：SUM、MIN、 MAX、AVG或COUNT。</p>
<p>加上了新的合计数据字段，在组件内部，代表分组数据的GroupingCollection其内容如下所示：</p>
<div class="UBBPanel">
<div class="UBBTitle">程序代码</div>
<div class="UBBContent">[{GroupLabel:"Southwest", Max Actual:55498, Min Actual:29134, children:[<br />
    {GroupLabel:"Arizona", Max Actual:38865, Min Actual:29885, children:[<br />
        {Region:"Southwest", Territory:"Arizona",<br />
            Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},<br />
        {Region:"Southwest", Territory:"Arizona",<br />
            Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000}]}<br />
    {GroupLabel:&#8221;Central California&#8221;, Max Actual:29134, Min Actual:29134,children:[<br />
        {Region:"Southwest", Territory:"Central California",<br />
            Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000}]}<br />
    {GroupLabel:&#8221;Nevada&#8221;, Max Actual:52888, Min Actual:52888, children:[<br />
        {Region:"Southwest", Territory:"Nevada",<br />
            Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000}]}<br />
    {GroupLabel:&#8221;Northern California&#8221;, Max Actual:55498, Min Actual:38805,children:[<br />
        {Region:"Southwest", Territory:"Northern California",<br />
            Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},<br />
        {Region:"Southwest", Territory:"Northern California",<br />
            Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000}]}<br />
    {GroupLabel:&#8221;Southern California&#8221;, Max Actual:44985, Min Actual:44913,children:[<br />
        {Region:"Southwest", Territory:"Southern California",<br />
            Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},<br />
        {Region:"Southwest", Territory:"Southern California",<br />
            Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}]}<br />
]}]</div>
</div>
<p><strong>[b]使用GroupingField和SummaryRow类的缺省属性</strong>[/b]</p>
<p>GroupingField.summaries属性是GroupingField的缺省属性，而SummaryRow.fields属性是 SummaryRow类的缺省属性；因此，您可以在您的代码中省略这些属性而重写前面的示例，如下所示</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8220;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "SimpleFlatData.as"<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />
        width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
        initialize=&#8221;gc.refresh();&#8221;&gt;<br />
        &lt;mx:dataProvider&gt;<br />
            &lt;mx:GroupingCollection id=&#8221;gc&#8221; source=&#8221;{dpFlat}&#8221;&gt;<br />
                &lt;mx:Grouping&gt;<br />
                    &lt;mx:GroupingField name=&#8221;Region&#8221;&gt;<br />
                        &lt;mx:SummaryRow summaryPlacement=&#8221;group&#8221;&gt;<br />
                            &lt;mx:SummaryField operation=&#8221;MIN&#8221;<br />
                                dataField=&#8221;Actual&#8221; label=&#8221;Min Actual&#8221;/&gt;<br />
                            &lt;mx:SummaryField operation=&#8221;MAX&#8221;<br />
                                dataField=&#8221;Actual&#8221; label=&#8221;Max Actual&#8221;/&gt;<br />
                            &lt;/mx:SummaryRow&gt;<br />
                        &lt;/mx:GroupingField&gt;<br />
                        &lt;mx:GroupingField name=&#8221;Territory&#8221;&gt;<br />
                            &lt;mx:SummaryRow summaryPlacement=&#8221;group&#8221;&gt;<br />
                                &lt;mx:SummaryField operation=&#8221;MIN&#8221;<br />
                                    dataField=&#8221;Actual&#8221; label=&#8221;Min Actual&#8221;/&gt;<br />
                                &lt;mx:SummaryField operation=&#8221;MAX&#8221;<br />
                                    dataField=&#8221;Actual&#8221; label=&#8221;Max Actual&#8221;/&gt;<br />
                            &lt;/mx:SummaryRow&gt;<br />
                        &lt;/mx:GroupingField&gt;<br />
                &lt;/mx:Grouping&gt;<br />
            &lt;/mx:GroupingCollection&gt;<br />
        &lt;/mx:dataProvider&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Min Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Max Actual&#8221;/&gt;<br />
        &lt;/mx:columns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</div>
</div>
<p>指定汇总数据存放位置</p>
<p>SummaryRow类包含一个summaryPlacement属性用于决定在AdvancedDataGrid控件的那里显示汇总数据。summaryPlacement属性允许的值如下：</p>
<p>first 在分组的第一行创建汇总行。<br />
last 在分组的最后一行创建汇总行。<br />
group 将合计数据添加到对应的分组中。<br />
在前面的“创建汇总中”小节中的示例已经演示了通过指定summaryPlacement属性值为group来将汇总数据添加到分组中。以下示例，使用相同的分组数据但是其summaryPlacement属性设置的是last：<br />
<a href="http://blog.eshangrao.com/images/flex/sumDg2.jpg" title="在新窗口打开图片" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/blog.eshangrao.com');" rel="lightbox"><img style="cursor: pointer;" title="在新窗口打开图片" src="http://blog.eshangrao.com/images/flex/sumDg2.jpg" border="0" alt="" width="550" /></a></p>
<p>您可以指定多个值给summaryPlacement属性，通过空格分隔，例如，指定“last group”这样的值表示同时在分组级别和分组的末行显示汇总数据。</p>
<p>这样，加上了新的合计数据字段，在组件内部，代表分组数据的GroupingCollection其内容如下所示：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">[{GroupLabel:"Southwest", children:[<br />
    {GroupLabel:"Arizona", children:[<br />
        {Region:"Southwest", Territory:"Arizona",<br />
            Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},<br />
        {Region:"Southwest", Territory:"Arizona",<br />
            Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000},<br />
        {Max Actual:38865, Min Actual:29885}]}<br />
    {GroupLabel:&#8221;Central California&#8221;, children:[<br />
        {Region:"Southwest", Territory:"Central California",<br />
            Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000},<br />
        {Max Actual:29134, Min Actual:29134}]}<br />
    {GroupLabel:&#8221;Nevada&#8221;, children:[<br />
        {Region:"Southwest", Territory:"Nevada",<br />
            Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000},<br />
        {Max Actual:52888, Min Actual:52888}]}<br />
    {GroupLabel:&#8221;Northern California&#8221;, children:[<br />
        {Region:"Southwest", Territory:"Northern California",<br />
            Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},<br />
        {Region:"Southwest", Territory:"Northern California",<br />
            Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000},<br />
        {Max Actual:55498, Min Actual:38805}]}<br />
    {GroupLabel:&#8221;Southern California&#8221;, children:[<br />
        {Region:"Southwest", Territory:"Southern California",<br />
            Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},<br />
        {Region:"Southwest", Territory:"Southern California",<br />
            Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000},<br />
        {Max Actual:44985, Min Actual:44913}]}<br />
    {Max Actual:55498, Min Actual:29134}<br />
]}]</div>
</div>
<p>注意，在整个组中添加了一个新行用于存放汇总数据，而且每个子组都添加了一个新行用于存放子组的汇总数据。</p>
<p>创建多个汇总</p>
<p>您可以在单个GroupingField实例中指定多个SummaryRow实例。在下面的示例中，我们定义如下字段为Region组创建汇总数据：Min Actual、Max Actual、Min Estimate和Max Estimate：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8220;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "SimpleFlatData.as"<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />
        width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
        initialize=&#8221;gc.refresh();&#8221;&gt;<br />
        &lt;mx:dataProvider&gt;<br />
            &lt;mx:GroupingCollection id=&#8221;gc&#8221; source=&#8221;{dpFlat}&#8221;&gt;<br />
                &lt;mx:Grouping&gt;<br />
                    &lt;mx:GroupingField name=&#8221;Region&#8221;&gt;<br />
                        &lt;mx:SummaryRow summaryPlacement=&#8221;group&#8221;&gt;<br />
                            &lt;mx:SummaryField operation=&#8221;MIN&#8221;<br />
                                dataField=&#8221;Actual&#8221; label=&#8221;Min Actual&#8221;/&gt;<br />
                            &lt;mx:SummaryField operation=&#8221;MAX&#8221;<br />
                                dataField=&#8221;Actual&#8221; label=&#8221;Max Actual&#8221;/&gt;<br />
                        &lt;/mx:SummaryRow&gt;<br />
                        &lt;mx:SummaryRow summaryPlacement=&#8221;group&#8221;&gt;<br />
                            &lt;mx:SummaryField operation=&#8221;MIN&#8221;<br />
                                dataField=&#8221;Estimate&#8221; label=&#8221;Min Estimate&#8221;/&gt;<br />
                            &lt;mx:SummaryField operation=&#8221;MAX&#8221;<br />
                                dataField=&#8221;Estimate&#8221; label=&#8221;Max Estimate&#8221;/&gt;<br />
                        &lt;/mx:SummaryRow&gt;<br />
                    &lt;/mx:GroupingField&gt;<br />
                    &lt;mx:GroupingField name=&#8221;Territory&#8221;/&gt;<br />
                &lt;/mx:Grouping&gt;<br />
            &lt;/mx:GroupingCollection&gt;<br />
        &lt;/mx:dataProvider&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Min Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Max Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Min Estimate&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Max Estimate&#8221;/&gt;<br />
        &lt;/mx:columns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</div>
</div>
<p><a href="http://labs.eshangrao.com/flex/3/adg/SummaryGroupADGMultipleSummaries.swf" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');">运行实例看看</a><br />
创建列分组</p>
<p>您可以使用列分组将多列归集到一个单一列表头下，如下所示：<br />
<a href="http://blog.eshangrao.com/images/flex/moxie/columnsGroup.jpg" title="在新窗口打开图片" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/blog.eshangrao.com');" rel="lightbox"><img style="cursor: pointer;" title="在新窗口打开图片" src="http://blog.eshangrao.com/images/flex/moxie/columnsGroup.jpg" border="0" alt="" width="550" /></a><br />
在该示例中，您可以提供给数据表格以扁平数据，然后对Actual和Estimate列归组到一个单一的名称为Revenues的列中。</p>
<p>要在一个AdvancedDataGrid控件中进行列分组，您必须如下做：</p>
<p>使用AdvancedDataGrid.groupedColumns属性而不是AdvancedDataGrid.columns属性来标识列。<br />
使用AdvancedDataGridColumnGroup来指定分组。<br />
下面是前面示意图中的AdvancedDataGrid控件的代码实现：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8220;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "SimpleFlatData.as";<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />
        dataProvider=&#8221;{dpFlat}&#8221;<br />
        width=&#8221;100%&#8221; height=&#8221;100%&#8221;&gt;<br />
        &lt;mx:groupedColumns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumnGroup headerText=&#8221;Revenues&#8221;&gt;<br />
                &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
                &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
            &lt;/mx:AdvancedDataGridColumnGroup&gt;<br />
        &lt;/mx:groupedColumns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</div>
</div>
<p><a href="http://labs.eshangrao.com/flex/3/adg/ColumnGroupADG.swf" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');">运行例子看看</a><br />
groupedColumns 属性包括AdvancedDataGridColumn类和AdvancedDataGridColumnGroup类的实例。 AdvancedDataGridColumn类的实例在控件中显示为单独的一列。而所有在AdvancedDataGridColumnGroup实例中指定的列将作为已分组的列显示在一起。</p>
<p>您可以给控件添加多个分组，下面的示例增加名称为Area和Revenue的两个分组：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8220;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "SimpleFlatData.as";<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />
        dataProvider=&#8221;{dpFlat}&#8221;<br />
        width=&#8221;100%&#8221; height=&#8221;100%&#8221;&gt;<br />
        &lt;mx:groupedColumns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumnGroup headerText=&#8221;Area&#8221;&gt;<br />
                &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
                &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory&#8221;/&gt;<br />
            &lt;/mx:AdvancedDataGridColumnGroup&gt;<br />
            &lt;mx:AdvancedDataGridColumnGroup headerText=&#8221;Revenues&#8221;&gt;<br />
                &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
                &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
            &lt;/mx:AdvancedDataGridColumnGroup&gt;<br />
        &lt;/mx:groupedColumns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</div>
</div>
<p><a href="http://labs.eshangrao.com/flex/3/adg/ColumnGroupADG2Groups.swf" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');">运行实例</a><br />
<a href="http://blog.eshangrao.com/images/flex/moxie/ColumnGroupADG2Groups.jpg" title="在新窗口打开图片" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/blog.eshangrao.com');" rel="lightbox"><img style="cursor: pointer;" title="在新窗口打开图片" src="http://blog.eshangrao.com/images/flex/moxie/ColumnGroupADG2Groups.jpg" border="0" alt="" width="550" /></a><br />
您还可以将分组嵌套以让一个分组列包含多个分组，如下所示：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8221; layout=&#8221;vertical&#8221;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "SimpleFlatData.as";<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />
        dataProvider=&#8221;{dpFlat}&#8221;<br />
        width=&#8221;100%&#8221; height=&#8221;100%&#8221;&gt;<br />
        &lt;mx:groupedColumns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
            headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumnGroup headerText=&#8221;All Groups&#8221;&gt;<br />
                &lt;mx:AdvancedDataGridColumnGroup headerText=&#8221;Area&#8221;&gt;<br />
                    &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
                    &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory&#8221;/&gt;<br />
                &lt;/mx:AdvancedDataGridColumnGroup&gt;<br />
                &lt;mx:AdvancedDataGridColumnGroup headerText=&#8221;Revenues&#8221;&gt;<br />
                    &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
                    &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
                &lt;/mx:AdvancedDataGridColumnGroup&gt;<br />
            &lt;/mx:AdvancedDataGridColumnGroup&gt;<br />
        &lt;/mx:groupedColumns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</div>
</div>
<p><a href="http://labs.eshangrao.com/flex/3/adg/ColumnGroupADG2NestedGroups.swf" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');">运行效果</a></p>
<p>在分组中拖放列</p>
<p>By default, you can drag the columns in a group within the group to reposition them. You can also drag the entire group to reposition it in the AdvancedDataGrid control. 默认情况下，您可以拖动分组中的各列以在分组中重新放置它们。您也可以拖动整个分组以在AdvancedDataGrid控件中重新放置它们。</p>
<p>要禁用某一分组中所有列的拖动，设置AdvancedDataGridColumnGroup.childrenDragEnabled属性为false。要禁用单个列的拖动，设置AdvancedDataGridColumn.dragEnabled属性为false。</p>
<p>对分层数据进行列分组</p>
<p>和扁平数据一样，您使用分层数据进行列分组，以下例子修改自“为导航树创建单独的列“章节中的示例以将Actual和Estimates列归组到Revenues组列中：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8220;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
        import mx.collections.ArrayCollection;<br />
        include "SimpleHierarchicalData.as";<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid width=&#8221;100%&#8221; height=&#8221;100%&#8221;&gt;<br />
        &lt;mx:dataProvider&gt;<br />
            &lt;mx:HierarchicalData source=&#8221;{dpHierarchy}&#8221;/&gt;<br />
        &lt;/mx:dataProvider&gt;<br />
        &lt;mx:groupedColumns&gt;<br />
        &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumnGroup headerText=&#8221;Revenues&#8221;&gt;<br />
                &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
                &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
            &lt;/mx:AdvancedDataGridColumnGroup&gt;<br />
        &lt;/mx:groupedColumns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</div>
</div>
<p><a href="http://labs.eshangrao.com/flex/3/adg/SimpleHierarchicalADGGroupCol.swf" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');">运行实例</a><br />
<a href="http://blog.eshangrao.com/images/flex/moxie/SimpleHierarchicalADGGroupCol.jpg" title="在新窗口打开图片" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/blog.eshangrao.com');" rel="lightbox"><img style="cursor: pointer;" title="在新窗口打开图片" src="http://blog.eshangrao.com/images/flex/moxie/SimpleHierarchicalADGGroupCol.jpg" border="0" alt="" width="550" /></a><br />
上面的列分组示例中并没有为AdvancedDataGridColumnGroup类指定数据字段，但是，AdvancedDataGridColumnGroup类就是被设计用于和分层数据一起工作的。因此，如果您给 AdvancedDataGridColumnGroup类指定一个数据字段的话，它将自动给该数据字段的子字段创建一个列分组。</p>
<p>在下面示例中，HierarchicalDataForGroupedColumns.as文件定义了一个分层数据，设置Revenues字段包含俩个子字段，Actual 和Estimate：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">Bindable]<br />
private var dpHierarchy:ArrayCollection = new ArrayCollection([<br />
    {Region:"Southwest", Territory:"Arizona",<br />
        Territory_Rep:"Barbara Jennings",<br />
        Revenues:{Actual:38865, Estimate:40000}},<br />
    {Region:"Southwest", Territory:"Arizona",<br />
        Territory_Rep:"Dana Binn",<br />
        Revenues:{Actual:29885, Estimate:30000}},<br />
    {Region:"Southwest", Territory:"Central California",<br />
        Territory_Rep:"Joe Smith",<br />
        Revenues:{Actual:29134, Estimate:30000}},<br />
    {Region:"Southwest", Territory:"Nevada",<br />
        Territory_Rep:"Bethany Pittman",<br />
        Revenues:{Actual:52888, Estimate:45000}},<br />
    {Region:"Southwest", Territory:"Northern California",<br />
        Territory_Rep:"Lauren Ipsum",<br />
        Revenues:{Actual:38805, Estimate:40000}},<br />
    {Region:"Southwest", Territory:"Northern California",<br />
        Territory_Rep:"T.R. Smith",<br />
        Revenues:{Actual:55498, Estimate:40000}},<br />
    {Region:"Southwest", Territory:"Southern California",<br />
        Territory_Rep:"Alice Treu",<br />
        Revenues:{Actual:44985, Estimate:45000}},<br />
    {Region:"Southwest", Territory:"Southern California",<br />
        Territory_Rep:"Jane Grove",<br />
        Revenues:{Actual:44913, Estimate:45000}}<br />
]);</div>
</div>
<p>下面示例使用该数据并且指定Revenues字段为AdvancedDataGridColumnGroup.dataField属性的值，其输出如下：</p>
<p>以下是实现代码：</p>
<div class="UBBPanel">
<div class="UBBTitle"> 程序代码</div>
<div class="UBBContent">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8220;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "HierarchicalDataForGroupedColumns.as";<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />
        width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
        defaultLeafIcon=&#8221;{null}&#8221;&gt;<br />
        &lt;mx:dataProvider&gt;<br />
            &lt;mx:HierarchicalData source=&#8221;{dpHierarchy}&#8221;/&gt;<br />
        &lt;/mx:dataProvider&gt;<br />
        &lt;mx:groupedColumns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumnGroup dataField=&#8221;Revenues&#8221;&gt;<br />
                &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
                &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
            &lt;/mx:AdvancedDataGridColumnGroup&gt;<br />
        &lt;/mx:groupedColumns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</div>
</div>
<p><a href="http://labs.eshangrao.com/flex/3/adg/ColumnGroupHierarchData.swf" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');">运行实例</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.allsprite.com/?feed=rss2&amp;p=161</wfw:commentRss>
		</item>
		<item>
		<title>Flex 3 体验:AdvancedDataGrid的使用(第二部分)</title>
		<link>http://www.allsprite.com/?p=157</link>
		<comments>http://www.allsprite.com/?p=157#comments</comments>
		<pubDate>Wed, 13 Aug 2008 09:33:46 +0000</pubDate>
		<dc:creator>sprite</dc:creator>
		
		<category><![CDATA[交互设计]]></category>

		<category><![CDATA[AdvancedDataGrid]]></category>

		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.allsprite.com/?p=157</guid>
		<description><![CDATA[继续第一部分，我们继续来讲AdvancedDataGrid的使用。
选择多个单元格及多行
所有基于List的控件都支持allowMultipleSelection属性。将allowMultipleSelection属性设置为True可以使得您在控件中一次选择不止... ]]></description>
			<content:encoded><![CDATA[<p>继续<a href="http://www.minski.cn/article.asp?id=59" onclick="javascript:pageTracker._trackPageview ('/outbound/www.minski.cn');"><span style="color: #2175bc;">第一部</span></a>分，我们继续来讲AdvancedDataGrid的使用。<br />
选择多个单元格及多行<br />
所有基于List的控件都支持allowMultipleSelection属性。将allowMultipleSelection属性设置为True可以使得您在控件中一次选择不止一个条目。例如，DataGrid控件可以让您选择多行这样您就可以将他们拖放到另一个DataGrid中。<br />
AdvancedDataGrid增加了可以让您选择多个单元格的新的特性，一旦已选择，您就可以将其拖放到另一个AdvancedDataGrid控件中、将它们拷贝到剪切板中或者在单元格数据进行某些其他的处理。<br />
您可以使用AdvancedDataGrid控件的selectionMode和allowMultipleSelection配置多重选择。 selectionMode的缺省属性是singleRow，这就是说您一次只能选择单行。要多重选择，需要将selectionMode属性设置为 multipleRows或者multipleCells。<br />
多个单元格的选择方式和表格处理软件中的用法相似，连续的使用Shift键，非连续的使用Control建。<br />
选择控件中邻近的单元<br />
点击第一个单元，在某行或某列，选择它。<br />
在选择其他的单元时按下Shift键。如果selectionMode设置为multipleRows，点击任何其他行的单元格来选择多个时，将选择邻近的行。如果selectionMode设置为multipleCells，点击任何单元格，将选择邻近的单元格<br />
选择控件中非邻近的单元<br />
点击第一个单元，在某行或某列，选择它。<br />
在选择其他的单元时按下Control键。如果selectionMode设置为multipleRows，点击任何其他行的单元格来选择多个时，将选择该单独的行。如果selectionMode设置为multipleCells，点击任何单元格，将选择该单独的单元格<br />
一旦选择了 AdvancedDataGrid控件的某行或列时，该控件将更新selectedCells属性来记录您的选择信息。selectedCells是一个对象数组，它包含的每个对象都有一个rowIndex和columnIndex属性来表示您选择的单元格在控件中的行列的位置。<br />
selectionMode属性的值决定了rowIndex和columnIndex属性的值，如下表所示：<br />
selectionMode属性 rowIndex和columnIndex属性值<br />
none 控件不允许选择，并且selectedCells为null<br />
singleRow 点击某行的任意单元来选择该行。<br />
在选择后，selectedCells包含一个单独对象：<br />
[{rowIndex:selectedRowIndex, columnIndex: -1}]<br />
multipleRows 点击某行的任意单元来选择该行。<br />
对于非邻近行，按下Control键时，点击其他行的单元格来选择其他行。<br />
对于邻近行，按下Shfit键时，点击其他行的单元格来选择多个连续的行。<br />
选择后，每行在selectedCells保存为一个对象：</p>
<p> 程序代码</p>
<p>[ {rowIndex: selectedRowIndex1, columnIndex: -1},<br />
  {rowIndex: selectedRowIndex2, columnIndex: -1},<br />
  ...<br />
  {rowIndex: selectedRowIndexN, columnIndex: -1}<br />
]</p>
<p>singleCell 点击任意单元来选择该单元格。<br />
在选择后，selectedCells包含一个单独对象：<br />
[{rowIndex: selectedRowIndex, columnIndex:selectedColIndex}]<br />
multipleCells 点击任意单元来选择该单元格。<br />
对于非邻近单元，按下Control键时，点击任意单元格来选择多个非连续的单元格。<br />
对于邻近单元，按下Shfit键时，点击任意单元格来选择多个连续的单元格。<br />
选择后，每行在selectedCells保存为一个对象：</p>
<p> 程序代码</p>
<p>[ {rowIndex: selectedRowIndex1, columnIndex: selectedColIndex1},<br />
  {rowIndex: selectedRowIndex2, columnIndex: selectedColIndex2},<br />
  ...<br />
  {rowIndex: selectedRowIndexN, columnIndex: selectedColIndexN}<br />
]</p>
<p>以下示例设置selectionMode属性为multipleCells使得您可以选择表格中的多个单元。该应用使用KeyUp事件处理器来识别Control-C组合键，如果监听到，将选择的多个单元格从AdvancedDataGrid控件复制到系统剪贴板中。<br />
在拷贝单元格后，您可以将这些单元格粘贴到Flex应用的其他位置中，或者将它们粘贴到其他应用如微软Excel。您可以将它们粘贴到应用底部的TextArea中去。</p>
<p> 程序代码</p>
<p>&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');"><span style="color: #2175bc;">http://www.adobe.com/2006/mxml</span></a>&#8220;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            import flash.events.KeyboardEvent;<br />
            import flash.system.System;<br />
            include "StyleData.as"<br />
            // Event handler to recognize when Ctrl-C is pressed,<br />
            // and copy the selected cells to the system clipboard.<br />
            private function myKeyUpHandler(event:KeyboardEvent):void<br />
            {<br />
                var keycode_c:uint = 67;<br />
                if (event.ctrlKey &amp;&amp; event.keyCode == keycode_c)<br />
                {<br />
                    // Separator used between Strings sent to clipboard<br />
                    // to separate selected cells.<br />
                    var separator:String = ",";<br />
                    // The String sent to the clipboard<br />
                    var dataString:String = "";<br />
                    // Loop over the selectedCells property.<br />
                    // Data in selectedCells is ordered so that<br />
                    // the last selected cell is at the head of the list.<br />
                    // Process the data in reverse so<br />
                    // that it appears in the correct order in the clipboard.<br />
                    var n:int = event.currentTarget.selectedCells.length;<br />
                    for (var i:int = 0; i &lt; n; i++)<br />
                    {<br />
                        var cell:Object = event.currentTarget.selectedCells[i];<br />
                        // Get the row for the selected cell.<br />
                        var data:Object =<br />
                        event.currentTarget.dataProvider[cell.rowIndex];<br />
                        // Get the name of the field for the selected cell.<br />
                        var dataField:String =<br />
                        event.currentTarget.columns[cell.columnIndex].dataField;<br />
                        // Get the cell data using the field name.<br />
                        dataString = data[dataField] + separator + dataString;<br />
                    }<br />
                    // Remove trailing separator.<br />
                    dataString =<br />
                    dataString.substr(0, dataString.length - separator.length);<br />
                    // Write dataString to the clipboard.<br />
                    System.setClipboard(dataString);<br />
                }<br />
            }<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
        dataProvider=&#8221;{dpADG}&#8221;<br />
        selectionMode=&#8221;multipleCells&#8221;<br />
        allowMultipleSelection=&#8221;true&#8221;<br />
        keyUp=&#8221;myKeyUpHandler(event);&#8221;&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Artist&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Album&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Price&#8221;/&gt;<br />
        &lt;/mx:columns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
    &lt;mx:TextArea id=&#8221;myTA&#8221;/&gt;<br />
&lt;/mx:Application&gt;</p>
<p><a href="http://labs.eshangrao.com/flex/3/adg/CellSelectADG.swf" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');"><span style="color: #2175bc;">运行例子</span></a><br />
分层和分组数据显示<br />
AdvancedDataGrid支持分级和分组数据的显示，为了支持这样的显示，AdvancedDataGrid在第一列显示一个导航树以让您分级浏览数据。<br />
分层数据（Hierarchical data）是一种以父子项目结构分层的数据，分组数据（Grouped data）是一开始就为平面的而无内在层次关系的数据。在将该数据传递给AdvancedDataGrid前，您可以指定一个或更多的数据字段将一组数据归组为同一层次。<br />
以下文件中的代码演示分级数据示例：</p>
<p> 程序代码</p>
<p>//SimpleHierarchicalData.as:<br />
[Bindable]<br />
private var dpHierarchy:ArrayCollection = new ArrayCollection([<br />
    {Region:"Southwest", children: [<br />
        {Region:"Arizona", children: [<br />
            {Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},<br />
            {Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000}]},<br />
        {Region:&#8221;Central California&#8221;, children: [<br />
            {Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000}]},<br />
        {Region:&#8221;Nevada&#8221;, children: [<br />
            {Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000}]},<br />
        {Region:&#8221;Northern California&#8221;, children: [<br />
            {Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},<br />
            {Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000}]},<br />
        {Region:&#8221;Southern California&#8221;, children: [<br />
            {Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},<br />
            {Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}]}<br />
    ]}<br />
]);</p>
<p>注意该数据的顶层数据包含一个Region字段和多个第二层子对象，每个第二层子对象也包含一个Region字段和多个其他的子对象，以下示例演示AdvancedDataGrid控件对该数据的显示效果：<br />
<img title="在新窗口打开图片" src="http://blog.eshangrao.com/images/flex/moxie/simpleHierarchicalADG.jpg" border="0" alt="" /><br />
该示例的代码在“控制导航树”章节中。<br />
要显示扁平数据，在将其传递给AdvancedDataGrid前您首先要对数据进行归组。以下代码包含的是前面示例中分层数据的变异版本，其将数据组织为以平面结构：</p>
<p> 程序代码</p>
<p>[Bindable]<br />
private var dpFlat:ArrayCollection = new ArrayCollection([<br />
    {Region:"Southwest", Territory:"Arizona",<br />
        Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},<br />
    {Region:"Southwest", Territory:"Arizona",<br />
        Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000},<br />
    {Region:"Southwest", Territory:"Central California",<br />
        Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000},<br />
    {Region:"Southwest", Territory:"Nevada",<br />
        Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000},<br />
    {Region:"Southwest", Territory:"Northern California",<br />
        Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},<br />
    {Region:"Southwest", Territory:"Northern California",<br />
        Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000},<br />
    {Region:"Southwest", Territory:"Southern California",<br />
        Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},<br />
    {Region:"Southwest", Territory:"Southern California",<br />
        Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}<br />
]);</p>
<p>在该示例中，数据只包含一个层面没有内在的层次的单独纪录,要归组该数据，您可以指定一个或更多的数据字段将该数据归组为同一层次。以下示例演示AdvancedDataGrid控件对平面数据通过Region字段进行的分组。<br />
<img title="在新窗口打开图片" src="http://blog.eshangrao.com/images/flex/moxie/SimpleGroupADGMXML.jpg" border="0" alt="" /><br />
该示例代码在“显示分组数据“章节中<br />
设置分层数据的数据源<br />
要配置AdvancedDataGrid显示分级数据和导航树，您传递给dataProvider属性以HierarchicalData类或者 GroupingCollection类的实例，当您的数据以层次组织时使用HierarchicalData类。更多信息请查看“显示分层数据”。<br />
当您的数据以平面结构组织时使用GroupingCollection类，作为配置一个GroupingCollection类的实例的一部分，您需要指定一个或更多的字段来将平面数据组织为同一层次。更多信息请查看“显示分组数据”。<br />
您可以从任意数据创建一个HierarchicalData类或GroupingCollection类的实例来作为数据源。但是，AdvancedDataGrid控件按如下修改它为内部的数据表示：<br />
一个数组实例在AdvancedDataGrid控件内部使用一个ArrayCollection类实例表示。<br />
一个ArrayCollection在AdvancedDataGrid控件内部使用一个ArrayCollection类实例表示。<br />
一个包含正确XML文本的字符串在AdvancedDataGrid控件内部使用一个XMLListCollection类实例表示。<br />
一个XMLNode实例在AdvancedDataGrid控件内部使用一个XMLListCollection类实例表示。<br />
一个XMLList实例在AdvancedDataGrid控件内部使用一个XMLListCollection类实例表示。<br />
任何实现ICollectionView接口的对象在AdvancedDataGrid控件内部使用一个ICollectionView实例表示。<br />
一个其他任意类型的对象被作为唯一的条目包裹在一个的数组示例中。<br />
例如，如果您使用一个数组来创建HierarchicalData类的一个实例，并将该HierarchicalData实例传递给 AdvancedDataGrid.dataProvider属性，然后又从AdvancedDataGrid.dataProvider属性将其读回；您读回的数据将是一个ArrayCollection实例。<br />
控制导航树<br />
AdvancedDataGrid控件有时候因为该控件的第一列使用一个可缩放数来选择行的显示而被称作tree datagrid，唯一要记住的规则是该树总是显示在所有列的最左边。尽管在AdvancedDataGrid控件您可以任意组织列而不管数据是如何组织的。并且您可以通过拖动列来对AdvancedDataGrid控件上的列进行重新定位，但是导航树总是出现在列的最左边。<br />
数据表格的第一列通常与该控件的数据源的某一字段关联。该数据字段用于为树节点标签命名。<br />
在以下示例中，想您展示了“分层和分组数据显示”章节提到的AdvancedDataGrid控件分层结构数据的显示。该数据的顶层数据包含一个Region字段和多个第二层子对象，每个第二层子对象也包含一个Region字段和多个其他的子对象。<br />
该示例中的AdvancedDataGrid控件定义了四列来显示数据：Region、Territory Rep、 Actual和Estimate。</p>
<p> 程序代码</p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');"><span style="color: #2175bc;">http://www.adobe.com/2006/mxml</span></a>&#8221; layout=&#8221;vertical&#8221;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "SimpleHierarchicalData.as";<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid width=&#8221;100%&#8221; height=&#8221;100%&#8221;&gt;<br />
        &lt;mx:dataProvider&gt;<br />
            &lt;mx:HierarchicalData source=&#8221;{dpHierarchy}&#8221;/&gt;<br />
        &lt;/mx:dataProvider&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
            headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
        &lt;/mx:columns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</p>
<p><a href="http://labs.eshangrao.com/flex/3/adg/SimpleHierarchicalADG.swf" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');"><span style="color: #2175bc;">运行实例</span></a><br />
以下图片为上述示例创建的AdvancedDataGrid控件。该控件使用文件夹图标表示数据分支节点，使用文件图标代表叶子节点。控件的第一列和数据源的Region相关联。所以标签显示的是Region字段的值。<br />
注意树的叶子图标没有显示标签。这是因为每个territory都没包含Region字段。下一章我们将描述怎样控制导航树的图标显示。<br />
<img title="在新窗口打开图片" src="http://blog.eshangrao.com/images/flex/moxie/simpleHierarchicalADG.jpg" border="0" alt="" /><br />
设置导航树图标和标签<br />
导航树可以让您控制分支和叶子节点的图标和标签。您可显示一个有标签无图标的树、一个只有分支图标的树、一个所有都没有标签的树或者一个不与任何数据字段相关的自由列数。<br />
以下表描述了AdvancedDataGrid控件用于设置树图标的样式属性：<br />
样式属性 描述<br />
defaultLeafIcon 指定叶子节点图标<br />
disclosureClosedIcon 指定显示在封闭的分支节点前面的图标，缺省是一个黑三角形。<br />
disclosureOpenIcon 指定显示在展开的分支节点前面的图标，缺省是一个黑三角形。<br />
folderClosedIcon 为分支节点指定一个文件夹关闭图标<br />
folderOpenIcon 为分支节点指定一个文件夹打开图标<br />
以下示例设置缺省叶子图标为null以隐藏它，并且使用自定义的文件夹打开和关闭图标：</p>
<p> 程序代码</p>
<p>&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');"><span style="color: #2175bc;">http://www.adobe.com/2006/mxml</span></a>&#8220;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "SimpleHierarchicalData.as";<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
        defaultLeafIcon=&#8221;{null}&#8221;<br />
        folderOpenIcon=&#8221;@Embed(source=&#8217;assets/folderOpenIcon.jpg&#8217;)&#8221;<br />
        folderClosedIcon=&#8221;@Embed(source=&#8217;assets/folderClosedIcon.jpg&#8217;)&#8221;&gt;<br />
        &lt;mx:dataProvider&gt;<br />
            &lt;mx:HierarchicalData source=&#8221;{myHCollAC}&#8221;/&gt;<br />
        &lt;/mx:dataProvider&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
            headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
        &lt;/mx:columns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</p>
<p>您也可以使用setStyle()方法和&lt;mx:Style&gt;标签指定样式。如下所示：</p>
<p> 程序代码</p>
<p>&lt;mx:Style&gt;<br />
  AdvancedDataGrid {<br />
    defaultLeafIcon:ClassReference(null);<br />
    folderOpenIcon:Embed(source=&#8217;assets/folderOpenIcon.jpg&#8217;);<br />
    folderClosedIcon:Embed(source=&#8217;assets/folderClosedIcon.jpg&#8217;);<br />
  }<br />
&lt;/mx:Style&gt;</p>
<p>为导航树创建单独的列<br />
在“分层和分组数据显示”章节的示例中，第一列同时显示数据的Region字段值。因此，当年展开导航树节点时，每个树节点标签与对应数据行中的Region字段值一致。对于树的叶子节点，数据源没有包含Region字段值。所有叶子节点标签为空。<br />
您可以将导航树独自放置在单独的列中，该列不和任意数据字段对应。如下所示：<br />
<img title="在新窗口打开图片" src="http://blog.eshangrao.com/images/flex/moxie/SimpleHierarchicalADGTreeColumn.jpg" border="0" alt="" /><br />
该示例没有任何数据字段与将包含数列对应，所有树图标显示为无标签。该示例同时设置folderClosedIcon、folderOpenIcon、和defaultLeafIcon属性为null，但是disclosure图标被显示以使得用户可以打开或关闭树节点。<br />
以下代码实现该示例：</p>
<p> 程序代码</p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');"><span style="color: #2175bc;">http://www.adobe.com/2006/mxml</span></a>&#8221; layout=&#8221;vertical&#8221;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "SimpleHierarchicalData.as";<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
        folderClosedIcon=&#8221;{null}&#8221;<br />
        folderOpenIcon=&#8221;{null}&#8221;<br />
        defaultLeafIcon=&#8221;{null}&#8221;&gt;<br />
        &lt;mx:dataProvider&gt;<br />
            &lt;mx:HierarchicalData source=&#8221;{dpHierarchy}&#8221;/&gt;<br />
        &lt;/mx:dataProvider&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn headerText=&#8221;" width=&#8221;50&#8243;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
        &lt;/mx:columns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</p>
<p>显示分层数据<br />
分层数据是数据被分层组织的结构化数据。要在AdvancedDataGrid控件中显示分层数据，您需要将控件的数据源设置为HierarchicalData类的实例。数据源中的数据结构定义了AdvancedDataGrid控件对数据的如何显示。<br />
使用ArrayCollection定义分层数据<br />
正如下面示例中SimpleHierarchicalData.as文件显示的，使用ArrayCollection是创建分层数据的常用方式。在该示例中，数据有三个层次，一个跟层次和两个子层次：</p>
<p> 程序代码</p>
<p>Bindable]<br />
private var dpHierarchy:ArrayCollection = new ArrayCollection([<br />
    {Region:"Southwest", children: [<br />
        {Region:"Arizona", children: [<br />
            {Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},<br />
            {Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000}]},<br />
        {Region:&#8221;Central California&#8221;, children: [<br />
            {Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000}]},<br />
        {Region:&#8221;Nevada&#8221;, children: [<br />
            {Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000}]},<br />
        {Region:&#8221;Northern California&#8221;, children: [<br />
            {Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},<br />
            {Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000}]},<br />
        {Region:&#8221;Southern California&#8221;, children: [<br />
            {Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},<br />
            {Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}]}<br />
    ]}<br />
]);</p>
<p>该示例在ArrayCollection定义中使用children关键字来定义数据的层次。children关键字是HierarchicalData类用来定义层次的缺省关键字。<br />
您也可以使用使用其他的关键字来定义层次。以下示例显示HierarchicalDataCategories.as文件内容，其使用的是categories关键字：</p>
<p> 程序代码</p>
<p>[Bindable]<br />
private var dpHierarchy:ArrayCollection = new ArrayCollection([<br />
    {Region:"Southwest", categories: [<br />
        {Region:"Arizona", categories: [<br />
            {Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},<br />
            {Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000}]},<br />
        {Region:&#8221;Central California&#8221;, categories: [<br />
            {Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000}]},<br />
        {Region:&#8221;Nevada&#8221;, categories: [<br />
            {Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000}]},<br />
        {Region:&#8221;Northern California&#8221;, categories: [<br />
            {Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},<br />
            {Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000}]},<br />
        {Region:&#8221;Southern California&#8221;, categories: [<br />
            {Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},<br />
            {Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}]}<br />
    ]}<br />
]);</p>
<p>如下所示，使用HierarchicalData.childrenField属性来指定定义层级的字段名：</p>
<p> 程序代码</p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');"><span style="color: #2175bc;">http://www.adobe.com/2006/mxml</span></a>&#8221; layout=&#8221;vertical&#8221;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "HierarchicalDataCategories.as";<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid width=&#8221;100%&#8221; height=&#8221;100%&#8221;&gt;<br />
        &lt;mx:dataProvider&gt;<br />
            &lt;mx:HierarchicalData source=&#8221;{dpHierarchy}&#8221;<br />
                childrenField=&#8221;categories&#8221;/&gt;<br />
        &lt;/mx:dataProvider&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
        &lt;/mx:columns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</p>
<p><a href="http://labs.eshangrao.com/flex/3/adg/HierarchicalADGCategories.swf" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');"><span style="color: #2175bc;">运行实例</span></a><br />
显示分层XML数据<br />
前面章节的示例中使用ArrayCollection来创建AdvancedDataGrid控件。您也可以使用分层XML数据来创建 AdvancedDataGrid控件。以下示例修改前面章节的数据格式化为XML，然后将数据传递给AdvancedDataGrid控件：</p>
<p> 程序代码</p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');"><span style="color: #2175bc;">http://www.adobe.com/2006/mxml</span></a>&#8220;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.HierarchicalData;<br />
            import mx.collections.XMLListCollection;<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:XMLList id=&#8221;dpHierarchyXML&#8221; &gt;<br />
        &lt;Region Region=&#8221;Southwest&#8221;&gt;<br />
            &lt;Region Region=&#8221;Arizona&#8221;&gt;<br />
                &lt;Territory_Rep Territory_Rep=&#8221;Barbara Jennings&#8221;<br />
                    Actual=&#8221;38865&#8243; Estimate=&#8221;40000&#8243;/&gt;<br />
                &lt;Territory_Rep Territory_Rep=&#8221;Dana Binn&#8221;<br />
                    Actual=&#8221;29885&#8243; Estimate=&#8221;30000&#8243;/&gt;<br />
            &lt;/Region&gt;<br />
            &lt;Region Region=&#8221;Central California&#8221;&gt;<br />
                &lt;Territory_Rep Territory_Rep=&#8221;Joe Smith&#8221;<br />
                    Actual=&#8221;29134&#8243; Estimate=&#8221;30000&#8243;/&gt;<br />
            &lt;/Region&gt;<br />
            &lt;Region Region=&#8221;Nevada&#8221;&gt;<br />
                &lt;Territory_Rep Territory_Rep=&#8221;Bethany Pittman&#8221;<br />
                    Actual=&#8221;52888&#8243; Estimate=&#8221;45000&#8243;/&gt;<br />
            &lt;/Region&gt;<br />
            &lt;Region Region=&#8221;Northern California&#8221;&gt;<br />
                &lt;Territory_Rep Territory_Rep=&#8221;Lauren Ipsum&#8221;<br />
                    Actual=&#8221;38805&#8243; Estimate=&#8221;40000&#8243;/&gt;<br />
                &lt;Territory_Rep Territory_Rep=&#8221;T.R. Smith&#8221;<br />
                    Actual=&#8221;55498&#8243; Estimate=&#8221;40000&#8243;/&gt;<br />
            &lt;/Region&gt;<br />
            &lt;Region Region=&#8221;Southern California&#8221;&gt;<br />
                &lt;Territory_Rep Territory_Rep=&#8221;Alice Treu&#8221;<br />
                    Actual=&#8221;44985&#8243; Estimate=&#8221;45000&#8243;/&gt;<br />
                &lt;Territory_Rep Territory_Rep=&#8221;Jane Grove&#8221;<br />
                    Actual=&#8221;44913&#8243; Estimate=&#8221;45000&#8243;/&gt;<br />
            &lt;/Region&gt;<br />
        &lt;/Region&gt;<br />
    &lt;/mx:XMLList&gt;<br />
    &lt;mx:AdvancedDataGrid width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
        dataProvider=&#8221;{new HierarchicalData(dpHierarchyXML)}&#8221;&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;@Region&#8221;<br />
                headerText=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;@Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;@Actual&#8221;<br />
                headerText=&#8221;Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;@Estimate&#8221;<br />
                headerText=&#8221;Estimate&#8221;/&gt;<br />
        &lt;/mx:columns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</p>
<p><a href="http://labs.eshangrao.com/flex/3/adg/SimpleHierarchicalADGXML.swf" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');"><span style="color: #2175bc;">运行实例</span></a><br />
显示分组数据<br />
分组数据是组织为同一层次以在AdvancedDataGrid控件中显示的扁平数据。要分组您的数据，您要指定一个更多的字段来将数据归集为同一层次下。<br />
要使用分组数据来生成AdvancedDataGrid控件，您需要从您的扁平数据中创建一个GroupingCollection类的实例，然后将该 GroupingCollection实例作为数据源传递给AdvancedDataGrid控件。当年从扁平数据创建一个 GroupingCollection类的实例时，您需要指定数据中的那些字段用于创建层次。<br />
本节中大部份示例使用如下扁平数据来创建GroupingCollection类的实例：</p>
<p> 程序代码</p>
<p>[Bindable]<br />
private var dpFlat:ArrayCollection = new ArrayCollection([<br />
    {Region:"Southwest", Territory:"Arizona",<br />
        Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},<br />
    {Region:"Southwest", Territory:"Arizona",<br />
        Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000},<br />
    {Region:"Southwest", Territory:"Central California",<br />
        Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000},<br />
    {Region:"Southwest", Territory:"Nevada",<br />
        Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000},<br />
    {Region:"Southwest", Territory:"Northern California",<br />
        Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},<br />
    {Region:"Southwest", Territory:"Northern California",<br />
        Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000},<br />
    {Region:"Southwest", Territory:"Southern California",<br />
        Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},<br />
    {Region:"Southwest", Territory:"Southern California",<br />
        Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}<br />
]);</p>
<p>以下示例使用该数据:</p>
<p> 程序代码</p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');"><span style="color: #2175bc;">http://www.adobe.com/2006/mxml</span></a>&#8220;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "SimpleFlatData.as"<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />
        width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
        initialize=&#8221;gc.refresh();&#8221;&gt;<br />
        &lt;mx:dataProvider&gt;<br />
            &lt;mx:GroupingCollection id=&#8221;gc&#8221; source=&#8221;{dpFlat}&#8221;&gt;<br />
                &lt;mx:grouping&gt;<br />
                    &lt;mx:Grouping&gt;<br />
                    &lt;mx:GroupingField name=&#8221;Region&#8221;/&gt;<br />
                    &lt;mx:GroupingField name=&#8221;Territory&#8221;/&gt;<br />
                    &lt;/mx:Grouping&gt;<br />
                &lt;/mx:grouping&gt;<br />
            &lt;/mx:GroupingCollection&gt;<br />
        &lt;/mx:dataProvider&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
        &lt;/mx:columns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</p>
<p><a href="http://labs.eshangrao.com/flex/3/adg/SimpleGroupADGMXML.swf" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');"><span style="color: #2175bc;">运行示例</span></a><br />
上面的示例中使用俩个字段来分组数据：Region和Territory。<br />
GroupingCollection实例实际上基于这些字段重新格式化数据以作为GroupingCollection实例的内部数据表示，如下所示：</p>
<p> 程序代码</p>
<p>[{GroupLabel:"Southwest", children:[<br />
    {GroupLabel:"Arizona", children:[<br />
        {Region:"Southwest", Territory:"Arizona",<br />
            Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},<br />
        {Region:"Southwest", Territory:"Arizona",<br />
            Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000}]}<br />
    {GroupLabel:&#8221;Central California&#8221;, children:[<br />
        {Region:"Southwest", Territory:"Central California",<br />
            Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000}]}<br />
    {GroupLabel:&#8221;Nevada&#8221;, children:[<br />
        {Region:"Southwest", Territory:"Nevada",<br />
            Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000}]}<br />
    {GroupLabel:&#8221;Northern California&#8221;, children:[<br />
        {Region:"Southwest", Territory:"Northern California",<br />
            Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},<br />
        {Region:"Southwest", Territory:"Northern California",<br />
            Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000}]}<br />
    {GroupLabel:&#8221;Southern California&#8221;, children:[<br />
        {Region:"Southwest", Territory:"Southern California",<br />
            Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},<br />
        {Region:"Southwest", Territory:"Southern California",<br />
            Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}]}<br />
]}]</p>
<p>注意该表示的为基于扁平数据的Region和Territory字段的数据分层结构，该GroupingCollection实例同样包含输入的扁平数据的原始行，但是这些行被基于分组字段组织为分层结构。缺省的被用来从扁平数据创建层次结构的数据字段名是GroupLabel。您可以使用Grouping.label属性来指定不同的名字。<br />
AdvancedDataGrid控件使用GroupLabel字段定义导航树分支节点的标签。AdvancedDataGrid控件的第一列同样与Region字段相对应。所以导航树使用Region字段来定义树叶子节点的标签。<br />
grouping属性是GroupingCollection类的缺省MXML属性，所以您可以如下重写前面的示例：</p>
<p> 程序代码</p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');"><span style="color: #2175bc;">http://www.adobe.com/2006/mxml</span></a>&#8220;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "SimpleFlatData.as"<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />
        width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
        initialize=&#8221;gc.refresh();&#8221;&gt;<br />
        &lt;mx:dataProvider&gt;<br />
            &lt;mx:GroupingCollection id=&#8221;gc&#8221; source=&#8221;{dpFlat}&#8221;&gt;<br />
                &lt;mx:grouping&gt;<br />
                    &lt;mx:GroupingField name=&#8221;Region&#8221;/&gt;<br />
                    &lt;mx:GroupingField name=&#8221;Territory&#8221;/&gt;<br />
                &lt;/mx:grouping&gt;<br />
            &lt;/mx:GroupingCollection&gt;<br />
        &lt;/mx:dataProvider&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
        &lt;/mx:columns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</p>
<p>调用GroupingCollection.refresh()方法<br />
GroupingCollection.refresh() 方法将GroupingCollection类的设置应用到数据中。您必须在任何时候您通过设置GroupingCollection类的 grouping、 source或summaries属性修改了GroupingCollection类时调用该方法。<br />
为GroupLabel字段创建列<br />
显示分组数据时可选地可以为分组字段生成的顶层条目创建一个单独列。例如，您使用Region和Territory字段来对扁平数据进行分组，这些字段被作为分支节点的标签显示在导航树上，所以您为这些列省去了单独的列，如下所示：<br />
以下代码创建该示例。注意该示例为GroupLabel字段包含了一个AdvancedDataGridColumn实例。对于Region和Territory没有定义列</p>
<p> 程序代码</p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');"><span style="color: #2175bc;">http://www.adobe.com/2006/mxml</span></a>&#8220;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;<br />
            include "SimpleFlatData.as";<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />
        width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
        defaultLeafIcon=&#8221;{null}&#8221;<br />
        initialize=&#8221;gc.refresh();&#8221;&gt;<br />
        &lt;mx:dataProvider&gt;<br />
            &lt;mx:GroupingCollection id=&#8221;gc&#8221; source=&#8221;{dpFlat}&#8221;&gt;<br />
                &lt;mx:Grouping&gt;<br />
                    &lt;mx:GroupingField name=&#8221;Region&#8221;/&gt;<br />
                    &lt;mx:GroupingField name=&#8221;Territory&#8221;/&gt;<br />
                &lt;/mx:Grouping&gt;<br />
            &lt;/mx:GroupingCollection&gt;<br />
        &lt;/mx:dataProvider&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;GroupLabel&#8221;<br />
                headerText=&#8221;Region/Territory&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
        &lt;/mx:columns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</p>
<p><a href="http://labs.eshangrao.com/flex/3/adg/SimpleGroupADGGroupLabelMXML.swf" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');"><span style="color: #2175bc;">运行实例</span></a><br />
在ActionScript中创建分组<br />
前面章节的示例我们使用的是MXML来创建分组，然而，您可能想让用户实时定义分组。以下示例通过事件处理器在ActionScript中创建分组：</p>
<p> 程序代码</p>
<p>&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');"><span style="color: #2175bc;">http://www.adobe.com/2006/mxml</span></a>&#8221; layout=&#8221;vertical&#8221;&gt;<br />
    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.GroupingField;<br />
            import mx.collections.Grouping;<br />
            import mx.collections.GroupingCollection;<br />
            import mx.collections.ArrayCollection;<br />
            include "SimpleFlatData.as";<br />
            [Bindable]<br />
            public var myGColl:GroupingCollection = new GroupingCollection();<br />
            private var myGrp:Grouping = new Grouping();<br />
            private function initDG():void {<br />
                // Initialize the GroupingCollection instance.<br />
                myGColl.source = dpFlat;<br />
                // The Grouping instance defines the grouping fields<br />
                // in the collection, and the order of the groups<br />
                // in the hierarchy.<br />
                myGrp.fields =<br />
                    [new GroupingField("Region"), new GroupingField("Territory")];<br />
                // The grouping property contains a Grouping instance.<br />
                myGColl.grouping = myGrp;<br />
                // Specify the GroupedCollection as the data provider for<br />
                // the AdvancedDataGrid control.<br />
                myADG.dataProvider=myGColl;<br />
                // Refresh the display.<br />
                myGColl.refresh();<br />
            }<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;<br />
    &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />
        width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />
        creationComplete=&#8221;initDG();&#8221;&gt;<br />
        &lt;mx:columns&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Region&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Territory_Rep&#8221;<br />
                headerText=&#8221;Territory Rep&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Actual&#8221;/&gt;<br />
            &lt;mx:AdvancedDataGridColumn dataField=&#8221;Estimate&#8221;/&gt;<br />
        &lt;/mx:columns&gt;<br />
    &lt;/mx:AdvancedDataGrid&gt;<br />
&lt;/mx:Application&gt;</p>
<p><a href="http://labs.eshangrao.com/flex/3/adg/SimpleGroupADG.swf" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');"><span style="color: #2175bc;">运行实例</span></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.allsprite.com/?feed=rss2&amp;p=157</wfw:commentRss>
		</item>
		<item>
		<title>Flex 3 体验:AdvancedDataGrid的使用(第一部分)</title>
		<link>http://www.allsprite.com/?p=155</link>
		<comments>http://www.allsprite.com/?p=155#comments</comments>
		<pubDate>Wed, 13 Aug 2008 09:29:49 +0000</pubDate>
		<dc:creator>sprite</dc:creator>
		
		<category><![CDATA[交互设计]]></category>

		<category><![CDATA[AdvancedDataGrid]]></category>

		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.allsprite.com/?p=155</guid>
		<description><![CDATA[Flex 3 安装后，开始体验，所以由今天开始，我们将陆续和大家一起来学习其中的新特性，在feiyblog看到例子 马上和大家分享一下：今天我们要说的是官方文档中用了整章介绍的AdvancedDataGrid，Adv... ]]></description>
			<content:encoded><![CDATA[<p>Flex 3 安装后，开始体验，所以由今天开始，我们将陆续和大家一起来学习其中的新特性，在feiyblog看到例子 马上和大家分享一下：<br />今天我们要说的是官方文档中用了整章介绍的AdvancedDataGrid，AdvancedDataGrid是DataGrid的高级版本，Flex 3 SDK并不包含它，其和Charting Enhancements一起构成了Flex Data Visualization package，TNND，也就是说这是收费组件，ADOBE的生财机器。所以官方提供的SDK中并没有这个组件，不过FlexBuilder 3 Beta1内置的SDK包含了Flex Data Visualization package，这个我已经将FlexBuilder 3 Beta1内置的SDK剥离出来了，需要的朋友可以从<a href="http://labs.eshangrao.com/flex/3/Flex_3_MOXIE_SDK.zip" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');">这里</a>下载。<br />相对DataGrid组件，AdvancedDataGrid主要有以下几个高级之处：<br />多列排序：按住Control键在点击某一列的表头来实现多列排序。 <br />自定义行和列样式：通过设置行和列的styleFunction指向一个函数来样式化行列 <br />显示分层数据：在组件的第一列显示一个可缩放的导航数来控制表格行的显示。 <br />创建多列分组：将多列汇聚到同一列表头下。 <br />使用单元渲染器（renderers）：跨越多栏使用同一渲染器或者一列使用多个渲染器。 <br />多列排序<br />缺省的情况下，AdvancedDataGrid是按数据添加到它的DataProvider的顺序显示数据，和DataGrid组件一样，AdvancedDataGrid也允许您在数据显示后对数据进行排序。不同的是DataGrid只能基于单列排序，而 AdvancedDataGrid支持基于多列的排序。<br />以下是多列排序的示例：
<p> 程序代码
<p>&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8220;&gt;<br />&nbsp;&nbsp;&nbsp; &lt;mx:Script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;![CDATA[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import mx.collections.ArrayCollection;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Bindable]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private var dpADG:ArrayCollection = new ArrayCollection([<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Artist:'Pavement', Album:'Slanted and Enchanted', Price:12.99},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Artist:'Pavement', Album:'Brighten the Corners', Price:13.99},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Artist:'Saner', Album:'A Child Once', Price:14.99},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Artist:'Saner', Album:'Helium Wings', Price:12.99},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Artist:'The Doors', Album:'The Doors', Price:10.99},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Artist:'The Doors', Album:'Morrison Hotel', Price:12.99},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Artist:'Grateful Dead', Album:'American Beauty', Price:11.99},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Artist:'Grateful Dead', Album:'In the Dark', Price:17.99},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Artist:'Grateful Dead', Album:'Shakedown Street', Price:13.99},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Artist:'The Doors', Album:'Strange Days', Price:12.99},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {Artist:'The Doors', Album:'The Best of the Doors', Price:10.99}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]]&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/mx:Script&gt;<br />&nbsp;&nbsp;&nbsp; &lt;mx:AdvancedDataGrid width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataProvider=&#8221;{dpADG}&#8221;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:columns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:AdvancedDataGridColumn dataField=&#8221;Artist&#8221; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:AdvancedDataGridColumn dataField=&#8221;Album&#8221; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:AdvancedDataGridColumn dataField=&#8221;Price&#8221; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mx:columns&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/mx:AdvancedDataGrid&gt; <br />&lt;/mx:Application&gt;
<p><a href="http://labs.eshangrao.com/flex/3/adg/Flex3_Adg_Sort.swf" onclick="javascript:pageTracker._trackPageview ('/outbound/labs.eshangrao.com');">运行实例</a><br />运行以上示例，如下进行排序：<br />点击AdvancedDataGrid组件的任意列表头对任意列进行排序，例如点击Artist列的列表头Artist列将升序进行排序，再次点击的话将按降序排序。 <br />按住Control键，点击其他任意的列头，例如点击Price列头，将在保持Artist列降序排列的情况下，将Price列按升序排列。现在你可以从中发现某一艺术家最便宜的专辑。 <br />再次点击Price列头，Price列将按降序排列 <br />按住Control键，点击任意其他列，将其加入排序条件中。 <br /><img title="在新窗口打开图片" alt="" src="http://blog.eshangrao.com/images/flex/moxie/sort_cols.jpg" border="0"><br />自定义行列样式<br />通过使用AdvancedDataGrid组件的回调(callback)函数来自定义表格行列的样式，要控制某一行的样式，使用<a href="http://livedocs.adobe.com/labs/flex/3/langref/mx/controls/advancedDataGridClasses/AdvancedDataGridBase.html#styleFunction" onclick="javascript:pageTracker._trackPageview ('/outbound/livedocs.adobe.com');">AdvancedDataGrid.styleFunction</a>属性，要自定义某一列的样式，使用<a href="http://livedocs.adobe.com/labs/flex/3/langref/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.html#styleFunction" onclick="javascript:pageTracker._trackPageview ('/outbound/livedocs.adobe.com');">AdvancedDataGridColumn.styleFunction</a>属性，AdvancedDataGrid.styleFunction指定的回调函数先执行，接着才执行AdvancedDataGridColumn.styleFunction属性指定的函数。<br />回调函数必须要有如下声明：
<p> 程序代码
<p>public function myStyleFunction(data:Object,column:SuperDataGridColumn):Object
<p>该函数返回一个包含用于表示样式设置的styleName:value对的完整对象，或者null。styleName为样式属性的名称，如Color，而value为样式属性的值，如0&#215;00FF00。<br />AdvancedDataGrid会在更新显示时调用回调函数，如应用启动时该组件第一次会绘制的时候，或者在您调用invalidateList()来刷新组件所有行的显示时。<br />本节的示例将使用回调函数来定义AdvancedDataGrid的样式，本节中所有的示例都使用以下StyleData.as文件中的数据：
<p> 程序代码
<p>[Bindable]<br />private var dpADG:ArrayCollection = new ArrayCollection([<br />&nbsp;&nbsp; {Artist:'Pavement', Album:'Slanted and Enchanted', Price:12.99},<br />&nbsp;&nbsp; {Artist:'Pavement', Album:'Brighten the Corners', Price:13.99},<br />&nbsp;&nbsp; {Artist:'Saner', Album:'A Child Once', Price:14.99},<br />&nbsp;&nbsp; {Artist:'Saner', Album:'Helium Wings', Price:12.99},<br />&nbsp;&nbsp; {Artist:'The Doors', Album:'The Doors', Price:10.99},<br />&nbsp;&nbsp; {Artist:'The Doors', Album:'Morrison Hotel', Price:12.99},<br />&nbsp;&nbsp; {Artist:'Grateful Dead', Album:'American Beauty', Price:11.99},<br />&nbsp;&nbsp; {Artist:'Grateful Dead', Album:'In the Dark', Price:17.99},<br />&nbsp;&nbsp; {Artist:'Grateful Dead', Album:'Shakedown Street', Price:13.99},<br />&nbsp;&nbsp; {Artist:'The Doors', Album:'Strange Days', Price:12.99},<br />&nbsp;&nbsp; {Artist:'The Doors', Album:'The Best of the Doors', Price:10.99}<br />]);
<p>定义行样式<br />以下示例使用AdvancedDataGrid.styleFunction属性指定一个回调函数来定义表格行样式。在该示例中，您可以使用Button控件来选择AdvancedDataGrid.styleFunction中的artist，然后回调函数将会红色高亮显示所有被选择的行。
<p> 程序代码
<p>&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />&lt;mx:Application xmlns:mx=&#8221;<a href="http://www.adobe.com/2006/mxml" onclick="javascript:pageTracker._trackPageview ('/outbound/www.adobe.com');">http://www.adobe.com/2006/mxml</a>&#8220;&gt;<br />&nbsp;&nbsp;&nbsp; &lt;mx:Script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;![CDATA[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import mx.collections.ArrayCollection;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Include the data for the AdvancedDataGrid control.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include "StyleData.as"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Artist name to highlight.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected var artistName:String;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Event handler to set the selected artist's name<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // based on the selected Button control.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public function setArtistName(event:Event):void<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; artistName=Button(event.currentTarget).label;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Refresh row display.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myADG.invalidateList();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Callback function that hightlights in red<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // all rows for the selected artist.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public function myStyleFunc(data:Object,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; col:AdvancedDataGridColumn):Object<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (data["Artist"] == artistName)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return {color:0xFF0000};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Return null if the Artist name does not match.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]]&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/mx:Script&gt;<br />&nbsp;&nbsp;&nbsp; &lt;mx:AdvancedDataGrid id=&#8221;myADG&#8221;<br />&nbsp;&nbsp;&nbsp; width=&#8221;100%&#8221; height=&#8221;100%&#8221;<br />&nbsp;&nbsp;&nbsp; dataProvider=&#8221;{dpADG}&#8221;<br />&nbsp;&nbsp;&nbsp; styleFunction=&#8221;myStyleFunc&#8221;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:columns&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:AdvancedDataGridColumn dataField=&#8221;Artist&#8221;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:AdvancedDataGridColumn dataField=&#8221;Album&#8221;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:AdvancedDataGridColumn dataField=&#8221;Price&#8221;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/mx:columns&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/mx:AdvancedDataGrid&gt;<br />&nbsp;&nbsp;&nbsp; &lt;mx:HBox&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:Button label=&#8221;Pavement&#8221; click=&#8221;setArtistName(event);&#8221;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:Button label=&#8221;Saner&#8221; click=&#8221;setArtistName(event);&#8221;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mx:Button label=&#8221;The Doors&#8221; click=&#8221;setArtistName(event);&#8221;/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/mx:HBox&gt;<br />&lt;/mx:Application&gt;
<p><a href