AdvancedDataGridのグループ化

 Adobeの資料によるとAdvancedDataGridのグループ化機能は、バインディング対象のデータをArrayCollectionで入れ子関係にすると、きちんと対応できると書かれている。

 http://livedocs.adobe.com/flex/3_jp/html/help.html?content=advdatagrid_09.html
 
 これと同じことを書いていたのだが、何故かうまく行かなかったので、動的にカラムを構築すると出来ないのか、とか入れ子関係を深くすると駄目なのかと思ったが、きちんと3重入れ子の動的なAdvancedDataGridでもきちんとバインディングできることが確認できた。
 
 明日は希望を持ってコードを見直してみよう。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
<![CDATA[
	import mx.controls.advancedDataGridClasses.AdvancedDataGridColumnGroup;
	import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
		import mx.collections.ArrayCollection;
		[Bindable]
		private var dpHierarchy:ArrayCollection = new ArrayCollection([
		  {Region:"Southwest", Territory:"Arizona", 
		      Territory_Rep:"Barbara Jennings", 
		      Revenues:{Actual:38865, Estimate:{ A:1501, B: 1210}}}, 
		  {Region:"Southwest", Territory:"Arizona", 
		      Territory_Rep:"Dana Binn", 
		      Revenues:{Actual:29885, Estimate:{ A:1520, B: 1300}}},  
		  {Region:"Southwest", Territory:"Central California", 
		      Territory_Rep:"Joe Smith", 
		      Revenues:{Actual:29134, Estimate:{ A:1530, B: 1340}}},  
		  {Region:"Southwest", Territory:"Nevada", 
		      Territory_Rep:"Bethany Pittman", 
		      Revenues:{Actual:52888, Estimate:{ A:1540, B: 1400}}},  
		  {Region:"Southwest", Territory:"Northern California", 
		      Territory_Rep:"Lauren Ipsum", 
		      Revenues:{Actual:38805, Estimate:{ A:1550, B: 1500}}}, 
		  {Region:"Southwest", Territory:"Northern California", 
		      Territory_Rep:"T.R. Smith", 
		      Revenues:{Actual:55498, Estimate:{ A:1560, B: 1600}}},  
		  {Region:"Southwest", Territory:"Southern California", 
		      Territory_Rep:"Alice Treu", 
		      Revenues:{Actual:44985, Estimate:{ A:1560, B: 1700}}}, 
		  {Region:"Southwest", Territory:"Southern California", 
		      Territory_Rep:"Jane Grove", 
		      Revenues:{Actual:44913, Estimate:{ A:1570, B: 1900}}}
		]);
		
		private function initFunc(event : Event) : void {
			var columnGroup : Array = new Array();
			columnGroup.push(new AdvancedDataGridColumn("Region"));
			columnGroup.push(new AdvancedDataGridColumn("Territory"));
			columnGroup.push(new AdvancedDataGridColumn("Territory_Rep"));
			
			var revenuesGroup : AdvancedDataGridColumnGroup = 
				new AdvancedDataGridColumnGroup("Revenues");
			revenuesGroup.children.push(new AdvancedDataGridColumn("Actual"));
			
			
			var estimateGroup : AdvancedDataGridColumnGroup =
				new AdvancedDataGridColumnGroup("Estimate");
			estimateGroup.children.push(new AdvancedDataGridColumn("A"));
			estimateGroup.children.push(new AdvancedDataGridColumn("B"));
			
			revenuesGroup.children.push(estimateGroup);

			columnGroup.push(revenuesGroup);
			adg1.groupedColumns = columnGroup;
		}
		
	]]>
</mx:Script>
	<mx:AdvancedDataGrid x="167" y="220" id="adg1" dataProvider="{dpHierarchy}" designViewDataType="flat" creationComplete="initFunc(event)" width="465" height="308">
	</mx:AdvancedDataGrid>
</mx:Application>


はてなTシャツ2009欲しい!
10名は当たらないだろう……と思いつつこっそり応募。