Hi jo I've had a little play around with what you gave and came up with the following example. Let us know if this is what you want.
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import mx.controls.dataGridClasses.DataGridColumn; import mx.collections.ArrayCollection; import mx.collections.IList; public function startUP():void { var myObject:Object = {0:"0", 1:"1", 2:"2"} var columns:ArrayCollection = new ArrayCollection(); columns.addItem("parent"); columns.addItem("cell1"); columns.addItem("cell2"); columns.addItem("dummy"); //create columns var colArray1:Array = []; for(var i:int=0;i<columns.length;i++) { var dgCol:DataGridColumn = new DataGridColumn(); dgCol.dataField = columns[i]; colArray1.push(dgCol); } dg.columns = colArray1; //let say 3 rows: var data_:ArrayCollection = new ArrayCollection; var rowData_:Map; rowData_ = new Map(); rowData_.put(columns[0],"root1"); rowData_.put(columns[1],55); rowData_.put(columns[2],100); rowData_.put(columns[3],myObject[0]); data_.addItem(rowData_); rowData_ = new Map(); rowData_.put(columns[0],"root1"); rowData_.put(columns[1],34); rowData_.put(columns[2],10); rowData_.put(columns[3],myObject[1]); data_.addItem(rowData_); rowData_ = new Map(); rowData_.put(columns[0],"root1"); rowData_.put(columns[1],6); rowData_.put(columns[2],60); rowData_.put(columns[3],myObject[2]); data_.addItem(rowData_); // set dg dataProvider var dp1:Array = []; var obj1:Object; for(var j:int=0;j<data_.length;j++) { var map:Map = data_.getItemAt(j) as Map; var meme:Object; obj1 = {}; for(var k:int=0;k<dg.columnCount;k++) { meme = dg.columns[k].dataField; obj1[meme.valueOf()] = map.getValueAt(k); } dp1.push(obj1); } dg.dataProvider = dp1; } ]]> </mx:Script> <mx:DataGrid id="dg" initialize="startUP()"/> </mx:Application>

