Hi Gregor, Dont want to bother, but I'll do a little :) Any success with what I sent?
--- In flexcoders@yahoogroups.com, "yossi.baram" <yossi.ba...@...> wrote: > > Sure, > This is the example I'm based on, you can just copy/paste to a new project > and it should work... > > temp1.mxml: > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="800" > height="400" > creationComplete="init()"> > <mx:RemoteObject> > </mx:RemoteObject> > <mx:Script> > <![CDATA[ > include "general.as" > > ]]> > </mx:Script> > <mx:HBox paddingBottom="0" paddingLeft="0" paddingRight="0" > paddingTop="0" width="100%" height="100%" > > <mx:AdvancedDataGrid id="resultTBLADG" dataProvider="{ohd}" width="700" > height="300"> > <mx:columns> > <!-- all we want to display of the object is the name, the ADG > will > take care of displaying the parent child relationship --> > <mx:AdvancedDataGridColumn dataField="name"/> > </mx:columns> > </mx:AdvancedDataGrid> > </mx:HBox> > </mx:Application> > > > The ObjectHierarchicalData class exactly as in the link I sent > > general.as: > > import mx.collections.*; > import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn; > import mx.controls.advancedDataGridClasses.AdvancedDataGridColumnGroup; > import mx.controls.advancedDataGridClasses.AdvancedDataGridRendererProvider; > > > [Bindable] > private var ohd:ObjectHierarchicalData; > [Bindable] > private var ohdTHeader:ObjectHierarchicalData; > [Bindable] > private var hCollView:HierarchicalCollectionView; > > /* here's the huge object that we're going to use to populate our > ObjectHierarchicalData object */ > private var largeObject:Object = > [ > { id:"1", "name":"Misc", "type":"parent","quantity":"32", "parentTask":"0"}, > {id:"2", "name":"Clean the kitchen", "type":"parent", "parentTask":"0"}, > {id:"3", "name":"Pay the bills", "type":"parent", "parentTask":"0"}, > {id:"4", "name":"Paint the shed", "type":"parent", "parentTask":"1"}, > {id:"5", "name":"Get ready for party", "type":"parent","parentTask":"1"}, > {id:"6", "name":"Do the dishes", "type":"child","op1":"1", > "op2":"2","parentTask":"2"}, > {id:"7", "name":"Take out trash", "type":"child", > "op1":"11","parentTask":"2"}, > {id:"8", "name":"Gas Bill", "type":"child", "op3":23,"parentTask":"3"}, > {id:"9", "name":"Registration", "type":"child", "op1":"2","parentTask":"3"}, > {id:"10", "name":"Fix the car", "type":"parent", "parentTask":"0"}, > {id:"11", "name":"New tires", "type":"child","op4":14,"op1":"3" > ,"parentTask":"10"}, > {id:"12", "name":"Emissions test", "type":"child","op1":"4", > "parentTask":"10"}, > {id:"13", "name":"Get new paint", > "type":"child","quantity":"33::44","op1":"5", "parentTask":"4"}, > {id:"14", "name":"Buy brushes", "type":"child", > "op1":"6","quantity":"32::42","revenue":"rev","sale":"sal","parentTask":"4"}, > {id:"15", "name":"Buy Drinks", "type":"child","op1":"7", "parentTask":"5"}, > {id:"16", "name":"clean living room", "type":"child","op1":"8", > "parentTask":"5"}, > {id:"17", "name":"finish invitations", > "type":"parent","op1":"9","parentTask":"5"},{"id":"18", "name":"sub finish", > "type":"parent","parentTask":"17"},{"id":"19", "name":"sub sub finish", > "type":"child","parentTask":"18"}]; > > private var columns:ArrayCollection = new ArrayCollection(); > > > public var headerObj:Object= > [ > {id:1,name:"Africa",type:"parent" ,parentTask:"0"}, > {id:2,name:"somalia",type:"parent", parentTask:"1"}, > {id:3,name:"Macro",type:"parent", parentTask:"1"}, > {id:4,name:"op1",type:"child",parentTask:"2"}, > {id:4,name:"op2",type:"child",parentTask:"2"}, > {id:5,name:"Europe",type:"parent" ,parentTask:"0"}, > {id:6,name:"Itly",type:"parent", parentTask:"5"}, > {id:7,name:"Japan",type:"parent", parentTask:"5"}, > {id:8,name:"op3",type:"child", parentTask:"6"}, > {id:9,name:"op4",type:"child", parentTask:"6"}, > {id:10,name:"op5",type:"child", parentTask:"7"} > ]; > > private var colGroup:AdvancedDataGridColumnGroup; > > private var columnGroup2:AdvancedDataGridColumnGroup; > > public var colsArray:Array=[]; > > > private var columnGroup3:AdvancedDataGridColumnGroup; > > [Bindable] > private var flag:Boolean = false; > > private function buildHeader():void > { > if(!flag){ > flag = true; > var advancedDGCol:AdvancedDataGridColumn = new AdvancedDataGridColumn(); > ohdTHeader = new ObjectHierarchicalData(headerObj); > resultTBLADG.expandAll(); > var colsArray1:Array=[]; > hCollView = new HierarchicalCollectionView(ohdTHeader); > advancedDGCol.dataField = "name"; > advancedDGCol.width=300; > advancedDGCol.headerText=''; > colsArray.push(advancedDGCol); > for each(var hObj:Object in headerObj) > { > if(hObj.parentTask=="0") > { > var > children:ICollectionView=hCollView.getChildren(hCollView.source.getData({id:hObj.id})); > var cursor:IViewCursor=children.createCursor(); > colGroup = new AdvancedDataGridColumnGroup(); > colGroup.headerText = hObj.name; > prepareColumns(cursor,colGroup); > colsArray.push(colGroup); > } > > } > > this.resultTBLADG.groupedColumns=colsArray; > this.resultTBLADG.validateNow(); > // here I load the Item renderer > var rendererProviders:Array = new Array(); > rendererProviders = setRendererProvider(); > > for each(var > Item:AdvancedDataGridRendererProvider in rendererProviders){ > > this.resultTBLADG.rendererProviders.push(Item); > } > } > } > private function > prepareColumns(cursor:IViewCursor,columnGroup:AdvancedDataGridColumnGroup):void > { > > while(!cursor.afterLast) > { > var node:Object = cursor.current; > > if(node.type=="parent") > { > var columnGroup2:AdvancedDataGridColumnGroup= new > AdvancedDataGridColumnGroup(); > columnGroup2.headerText = node.name; > columnGroup.children.push(columnGroup2); > var > children:ICollectionView=hCollView.getChildren(hCollView.source.getData({id:node.id})); > var cursor1:IViewCursor=children.createCursor(); > prepareColumns(cursor1,columnGroup2); > } > else > { > var childColumn:AdvancedDataGridColumn=new AdvancedDataGridColumn(); > childColumn.headerText = node.name; > childColumn.dataField = node.name; > columnGroup.children.push(childColumn); > } > cursor.moveNext(); > } > } > > private function init():void > { > ohd = new ObjectHierarchicalData(largeObject); > resultTBLADG.dataProvider = ohd; > var test:Array = resultTBLADG.dataProvider as Array; > buildHeader(); > } > > private function setRendererProvider():Array{ > columns.addItem("name"); > columns.addItem("op1"); > columns.addItem("op2"); > columns.addItem("op3"); > columns.addItem("op4"); > columns.addItem("op5"); > var > rendererProvider:AdvancedDataGridRendererProvider; > var rendererProviders:Array = new Array(); > for (var i:int = 0; i < columns.length; i++){ > var colName:String = > columns.getItemAt(i) as String; > rendererProvider = new > AdvancedDataGridRendererProvider(); > rendererProvider.columnIndex=i; > > var renderer_:IFactory= new > ClassFactory(ItemRenderer); > // Sending variables to the > renderer constructor > // (renderer_ as > ClassFactory).properties = {tableDataProvider_:tableDataProvider}; > rendererProvider.renderer= > renderer_; > > rendererProvider.dataField=colName; > > rendererProviders.push(rendererProvider); > } > return rendererProviders; > } > > > > > The ItemRenderer: > > package > { > > import flash.display.*; > import flash.events.MouseEvent; > > import mx.collections.*; > import mx.containers.HBox; > import mx.controls.AdvancedDataGrid; > import mx.controls.Label; > import mx.controls.dataGridClasses.DataGridListData; > import mx.controls.listClasses.BaseListData; > import mx.controls.listClasses.IDropInListItemRenderer; > import mx.events.*; > import mx.collections.GroupingCollection; > import mx.collections.IHierarchicalCollectionView; > import mx.controls.advancedDataGridClasses.AdvancedDataGridItemRenderer; > import mx.controls.advancedDataGridClasses.AdvancedDataGridListData; > > public class ItemRenderer extends AdvancedDataGridItemRenderer > implements IDropInListItemRenderer{ > private var _listData:DataGridListData; > private var updatedDP:ArrayCollection; > public var adg:AdvancedDataGrid=new AdvancedDataGrid(); > private var ohd:ObjectHierarchicalData; > public function ItemRenderer():void{ > > super(); > > } > > override public function set data(value:Object):void { > var sp:String; > super.data = value; > if (this.listData) > { > // get the owner AdvnacedDataGrid > var listOwner:AdvancedDataGrid = > AdvancedDataGrid(this.listData.owner); > //the default row > this.background = false; > this.alpha = 0; > this.backgroundColor = 0xFFFFFF; > if (listData!=null && data != null) > { > this.background = true; > this.backgroundColor = 0xFFB6B6; > } > // fetch the children of the selected item > var childCol:ICollectionView = > IHierarchicalCollectionView(listOwner.dataProvider).getChildren(value); > } > } > override public function get data():Object { > return super.data; > } > > // public function get listData():BaseListData > // { > // return _listData; > // } > // > // public function set listData(value:BaseListData):void > // { > // _listData = DataGridListData(value); > // } > > > // override protected function commitProperties():void{ > // super.commitProperties(); > // } > > } > } > > > Thats it. > > If you run it, you will see a TreeGreed, > > If you remark the following lines the ItemRenderer should be disabled and the > Tree will be revealed: > > var rendererProviders:Array = new Array(); > rendererProviders = setRendererProvider(); > for each(var Item:AdvancedDataGridRendererProvider in rendererProviders){ > this.resultTBLADG.rendererProviders.push(Item); > } > > > Just make a new project and copy it, then I think you will understand better. > > I must use this kind of flat data structure > > Thanks a lot > > > --- In flexcoders@yahoogroups.com, "Gregor Kiddie" <gkiddie@> wrote: > > > > Looking at the renderers source, it is a bit manky internally, though > > what you've posted shouldn't cause too many problems. Is your renderer > > doing anything else? Can you post the whole class? > > > > > > > > Gk. > > > > Gregor Kiddie > > Senior Developer > > INPS > > > > Tel: 01382 564343 > > > > Registered address: The Bread Factory, 1a Broughton Street, London SW8 > > 3QJ > > > > Registered Number: 1788577 > > > > Registered in the UK > > > > Visit our Internet Web site at www.inps.co.uk > > <blocked::http://www.inps.co.uk/> > > > > The information in this internet email is confidential and is intended > > solely for the addressee. Access, copying or re-use of information in it > > by anyone else is not authorised. Any views or opinions presented are > > solely those of the author and do not necessarily represent those of > > INPS or any of its affiliates. If you are not the intended recipient > > please contact is.helpdesk@ > > > > ________________________________ > > > > From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On > > Behalf Of yossi.baram > > Sent: 23 March 2009 09:57 > > To: flexcoders@yahoogroups.com > > Subject: [flexcoders] Re: Using ItemRenderer with IHierarchicalData > > DataProvider > > > > > > > > The link I sent may be incorrect, > > look at http://inovativeflexdevolopment.blogspot.com/ > > <http://inovativeflexdevolopment.blogspot.com/> > > (Flex3 Dynamic population of data in Advanced datagrid with customn > > header...) example > > > > --- In flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > > , "yossi.baram" <yossi.baram@> wrote: > > > > > > It make sense what you asked, > > > Yes it looks good, with hierarchy, when I eliminate the Itemrenderer > > call, my data structure is as in the example: > > > > > http://inovativeflexdevolopment.blogspot.com/2008/07/flex3-dynamic-popul > > ation-of > > <http://inovativeflexdevolopment.blogspot.com/2008/07/flex3-dynamic-popu > > lation-of> \-data-in.html > > > > > > I am building a flat data (a list of rows) with parentId and type > > (child/parent) in my java server using blazeds i send it by RemoteObject > > to the Flex app. > > > Then I use; > > > ohd = new ObjectHierarchicalData(rows); > > > adg.dataProvider = ohd; > > > > > > If I dont use the Itemrenderer the Treegrid looks good with all data > > and correct hierarchy, > > > > > > Please advise if you need some thing else, > > > > > > Thanks for your time :) > > > > > > > > > --- In flexcoders@yahoogroups.com > > <mailto:flexcoders%40yahoogroups.com> , "Gregor Kiddie" <gkiddie@> > > wrote: > > > > > > > > Not to be funny, but does the structure look right when you aren't > > using > > > > a custom renderer? I.e. is your data correct? > > > > > > > > > > > > > > > > Gk. > > > > > > > > Gregor Kiddie > > > > Senior Developer > > > > INPS > > > > > > > > Tel: 01382 564343 > > > > > > > > Registered address: The Bread Factory, 1a Broughton Street, London > > SW8 > > > > 3QJ > > > > > > > > Registered Number: 1788577 > > > > > > > > Registered in the UK > > > > > > > > Visit our Internet Web site at www.inps.co.uk > > > > <blocked::http://www.inps.co.uk/ <http://www.inps.co.uk/> > > > > > > > > > The information in this internet email is confidential and is > > intended > > > > solely for the addressee. Access, copying or re-use of information > > in it > > > > by anyone else is not authorised. Any views or opinions presented > > are > > > > solely those of the author and do not necessarily represent those of > > > > INPS or any of its affiliates. If you are not the intended recipient > > > > please contact is.helpdesk@ > > > > > > > > ________________________________ > > > > > > > > From: flexcoders@yahoogroups.com > > <mailto:flexcoders%40yahoogroups.com> > > [mailto:flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > > ] On > > > > Behalf Of yossi.baram > > > > Sent: 23 March 2009 09:30 > > > > To: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > > > > > > Subject: [flexcoders] Re: Using ItemRenderer with IHierarchicalData > > > > DataProvider > > > > > > > > > > > > > > > > Thanks, > > > > Well, I tried extending AdvancedDataGridItemRenderer & > > > > IDropInListItemRenderer > > > > > > > > and my set data I'm overriding: > > > > override public function set data(value:Object):void { > > > > > > > > super.data = value; > > > > if (this.listData) > > > > { > > > > // get the owner AdvnacedDataGrid > > > > var listOwner:AdvancedDataGrid = > > AdvancedDataGrid(this.listData.owner); > > > > if (listData!=null && data != null) > > > > { > > > > this.background = true; > > > > this.backgroundColor = 0xFFB6B6; > > > > } > > > > } > > > > } > > > > > > > > As you can see for the example its just should paint the rows. > > > > > > > > But still the data is flat I cannot see child1 as the parent :((( > > > > > > > > can you give me simple example how should set data() should look > > like to > > > > allow me manipulation on the data but still preserve the hierarchy? > > > > > > > > I tried many things but nothing > > > > > > > > Thanks > > > > > > > > > >