I never got this to work consistently. Original: http://www.mail-archive.com/flexcoders@yahoogroups.com/msg128005.html
Alex Harui was kind enough to respond and requested an example: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; public var derXML:XML = <root> <category order="0" x="0" y="0" width="200" height="200"> <name>Category 1</name> <item order="0"> <text>Some item number 1 in cat 1</text> </item> <item order="1"> <text>Some item number 2 in cat 1</text> </item> <item order="2"> <text>Some item number 3 in cat 1</text> </item> <item order="3"> <text>Some item number 4 in cat 1</text> </item> <item order="4"> <text>Some item number 5 in cat 1</text> </item> </category> </root> ; public var derXML2:XML = <root> <category order="0" x="0" y="0" width="200" height="200"> <name>Category 2</name> <item order="0"> <text>Some item number 1 in cat 2</text> </item> <item order="1"> <text>Some item number 2 in cat 2</text> </item> <item order="2"> <text>Some item number 3 in cat 2</text> </item> <item order="3"> <text>Some item number 4 in cat 2</text> </item> <item order="4"> <text>Some item number 5 in cat 2</text> </item> </category> </root> ; [Bindable] var derData:ArrayCollection; [Bindable] var derData2:ArrayCollection; public function init():void { buildMXMLfromXML(); }//end func public function buildMXMLfromXML():void { var categoriesXML:XML = derXML.category.(@order == 0)[0]; var categoriesXML2:XML = derXML2.category.(@order == 0)[0]; //get the items for this category var itemList:XMLList = categoriesXML.item; var itemList2:XMLList = categoriesXML2.item; derData = new ArrayCollection(); derData2 = new ArrayCollection(); for (var j:uint=0;j<itemList.length();j++) { derData.addItem({item:itemList[j].text.toString()}); }//end for for (var j:uint=0;j<itemList2.length();j++) { derData2.addItem({item:itemList2[j].text.toString()}); }//end for mainDataGrid.dataProvider = derData; mainDataGrid2.dataProvider = derData2; }//end function buildMXMLfromXML() public function updateDGheight(evt:Event):void { var tmpDG:DataGrid = evt.currentTarget as DataGrid; var measureHeight:Number = tmpDG.measureHeightOfItems(-1,tmpDG.dataProvider.length); tmpDG.height = measureHeight; }//end function ]]> </mx:Script> <mx:VBox width="800"> <mx:Box id="category1" width="100%"> <mx:DataGrid id="mainDataGrid" dragEnabled="true" dropEnabled="true" dragMoveEnabled="true" editable="{mx.core.Application.application.editMode}" allowDragSelection="true" verticalScrollPolicy="off" variableRowHeight="true" valueCommit="{updateDGheight(event)}" width="100%" showHeaders="false" alternatingItemColors="#FFFFFF" borderThickness="0" verticalGridLines="false" rollOverColor="#AAA9A9"> <mx:columns> <!-- Text --> <mx:DataGridColumn dataField="item" paddingLeft="5" wordWrap="true"/> </mx:columns> </mx:DataGrid> </mx:Box><!-- end category 1 --> <mx:Box id="category2" width="100%"> <mx:DataGrid id="mainDataGrid2" dragEnabled="true" dropEnabled="true" dragMoveEnabled="true" editable="{mx.core.Application.application.editMode}" allowDragSelection="true" verticalScrollPolicy="off" variableRowHeight="true" valueCommit="{updateDGheight(event)}" width="100%" showHeaders="false" alternatingItemColors="#FFFFFF" borderThickness="0" verticalGridLines="false" rollOverColor="#AAA9A9"> <mx:columns> <!-- Text --> <mx:DataGridColumn dataField="item" paddingLeft="5" wordWrap="true"/> </mx:columns> </mx:DataGrid> </mx:Box><!-- end category 2 --> </mx:VBox> </mx:Application>