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
> > > >
> > >
> >
>


Reply via email to