Flex 3 AdvancedDataGrid 具有 Tree 與 跨欄 (columnSpan) 的功能
以下利用這兩種特性做出可收合的 DataGrid
MyDataGridGroupItemRenderer Class:
- package com.ticore.uicomponents {
- import mx.controls.advancedDataGridClasses.AdvancedDataGridGroupItemRenderer;
- public class MyDataGridGroupItemRenderer extends AdvancedDataGridGroupItemRenderer {
- public function MyDataGridGroupItemRenderer() {
- super();
- }
- override protected function updateDisplayList(
- unscaledWidth:Number, unscaledHeight:Number):void {
- super.updateDisplayList(unscaledWidth, unscaledHeight);
- this.graphics.clear();
- this.graphics.lineStyle(1, 0x808080, 1, true);
- this.graphics.drawRect(-1, -1, unscaledWidth + 1, unscaledHeight);
- }
- }
- }
Flex MXML Code:
- <?xml version="1.0"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#E0E0E0">
- <mx:Script><![CDATA[
- import mx.controls.advancedDataGridClasses.*;
- import mx.collections.ArrayCollection;
- [Bindable]
- private var dpHierarchy:ArrayCollection = new ArrayCollection([
- {Region:"Arizona", children: [
- {Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},
- {Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000}]},
- {Region:"Central California", children: [
- {Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000}]},
- {Region:"Nevada", children: [
- {Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000}]},
- {Region:"Northern California", children: [
- {Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},
- {Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000}]},
- {Region:"Southern California", children: [
- {Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},
- {Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}]}
- ]);
- public function groupLabelFunction(item:Object, column:AdvancedDataGridColumn):String{
- if (item && item.children) {
- return item[column.dataField] + " (" + item.children.length + ")";
- } else {
- return item[column.dataField];
- }
- }
- ]]>
- </mx:Script><mx:AdvancedDataGrid id="myADG" width="100%" height="100%"
- rowHeight="24" headerHeight="24" fontSize="12" displayItemsExpanded="true"
- paddingTop="0" paddingBottom="0" paddingLeft="0" paddingRight="0"
- folderClosedIcon="{null}" folderOpenIcon="{null}" defaultLeafIcon="{null}" >
- <mx:dataProvider>
- <mx:HierarchicalData source="{dpHierarchy}" />
- </mx:dataProvider>
- <mx:rendererProviders>
- <mx:AdvancedDataGridRendererProvider columnIndex="0" columnSpan="4" dataField="Region"
- renderer="com.ticore.uicomponents.MyDataGridGroupItemRenderer" />
- <mx:AdvancedDataGridRendererProvider dataField="Territory_Rep"
- renderer="mx.controls.advancedDataGridClasses.AdvancedDataGridGroupItemRenderer" />
- </mx:rendererProviders>
- <mx:groupedColumns>
- <mx:AdvancedDataGridColumn id="col1" dataField="Region" width="20"
- labelFunction="groupLabelFunction" />
- <mx:AdvancedDataGridColumn id="col2" dataField="Territory_Rep"/>
- <mx:AdvancedDataGridColumn dataField="Actual"/>
- <mx:AdvancedDataGridColumn dataField="Estimate"/>
- </mx:groupedColumns>
- </mx:AdvancedDataGrid>
- </mx:Application>
- <!-- Ticore's Blog - http://ticore.blogspot.com/ -->
Online Demo:
轉載請註明出處 http://ticore.blogspot.com/2008/04/flex-collapsible-datagrid.html