Thanks guys, I'll give your suggestions a try and let know you what happens.
--- In [email protected], "securenetfreedom" <[EMAIL PROTECTED]> wrote: > > I might be able to help. I had a similar issue with XMLListCollection > dataProvider for an AdvacncedDataGrid. The filter function works great > and with lists in the 100's. You get the to sub nodes with e4x. > > Here's the filtering code: > > public function hideShowFilterFunc(item:Object):Boolean{ > if(item.name() == 'category'){ > return true; > }else if(item.name() == 'item'){ > return [EMAIL PROTECTED] == "1"; > } > return true; > } > > // Note setting filterFunction to 'null' does not work so, > // I had to create a filter func returning true to show all > public function showAllFilterFunc(item:Object):Boolean{ > return true; > } > > public function filterNotifs():void{ > dg.dataProvider.filterFunction = hideShowFilterFunc; > // invalidateProperties eliminates occassional cursor error > dg.invalidateProperties(); > // I'm using HeirarchialData so I have to refresh the dg's dp > // verses the dp directly. > dg.dataProvider.refresh(); > } > > public function resetNotifs():void{ > dg.dataProvider.filterFunction = showAllFilterFunc; > dg.dataProvider.refresh(); > } > > LMK, > > Jeff > > > > > --- In [email protected], "Alex Harui" <aharui@> wrote: > > > > getChildren is creating a separate collection for each branch and > > caching it. > > > > > > > > ________________________________ > > > > From: [email protected] [mailto:[EMAIL PROTECTED] On > > Behalf Of hpeter96 > > Sent: Friday, June 13, 2008 11:31 AM > > To: [email protected] > > Subject: [flexcoders] Re: Help with updating a Tree when its > > dataprovider has changed. > > > > > > > > I'm not sure if I understand correctly - Do you mean when I'm parsing > > the dataProvider, I should make a look that creates a separate > > XMLListCollection for each branch and apply the filterFunction before > > I append it to the dataProvider ? > > > > --- In [email protected] <mailto:flexcoders%40yahoogroups.com> > > , "Alex Harui" <aharui@> wrote: > > > > > > Try applying the filter to each child collection. > > > > > > > > > > > > ________________________________ > > > > > > From: [email protected] <mailto:flexcoders%40yahoogroups.com> > > [mailto:[email protected] <mailto:flexcoders%40yahoogroups.com> > > ] On > > > Behalf Of hpeter96 > > > Sent: Friday, June 13, 2008 6:13 AM > > > To: [email protected] <mailto:flexcoders%40yahoogroups.com> > > > Subject: [flexcoders] Help with updating a Tree when its dataprovider > > > has changed. > > > > > > > > > > > > I'm working on a tree control that has an XMLListCollection as its > > > dataprovider. > > > > > > The dataprovider has a couple of branches and nodes that sort of look > > > like this : > > > > > > Company > > > | > > > |-- Department > > > |-- Person > > > |-- Person > > > |-- etc.. > > > | > > > |-- Department > > > |-- Person > > > |-- Person > > > |-- etc.. > > > | > > > |-- Person > > > |-- Person > > > |! -- etc.. > > > > > > I'd like to have each Person node appear in the Tree depending on a > > > 'visibility' flag. So if it is set, then the Person node would appear > > > and if its not set, then the Person node won't appear. > > > > > > What I have right now is each Person node has an attribute called > > > 'visibility' and when it is set to 'ModuleConstants.VISIBILITY_NONE', > > > the tree's dataDescriptor removes them from the list with this > > override > > > : > > > > > > // > > > ---------------------------------------------------------- > > > - > > > override public function getChildren(node:Object, model:Object = > > > null):ICollectionView > > > { > > > var childrenCollection:ICollectionView; > > > var myCursor:IViewCursor;// = childrenCollection.createCursor(); > > > > > > childrenCo! llection = super.getChildren(node, model); > > > > > > if(childrenCollection != null) > > > { > > > myCursor = childrenCollection.createCursor(); > > > > > > while(!myCursor.afterLast) > > > { > > > // check to see if we want to show this node or not > > > if(Number(myCursor.current.attribute("visibility")) == > > > ModuleConstants.VISIBILITY_NONE) > > > { > > > myCursor.remove(); > > > &nb! sp; } > > > else > > > { > > > myCursor.moveNext(); > > > } > > > } > > > } > > > > > > return childrenCollection; > > > } // END OF getChildren() > > > > > > // > > > ---------------------------------------------------------- > > > - > > > > > > When I want to show or remove a Person node during runtime, I have a > > > function that : > > > - goes to the specific Department branch and remove all the people > > nodes > > > underneath it. > > > - ! adds all of the Person nodes again, but sets the visibility fl! ag > > > for t he Person nodes I want to appear. > > > - calls the tree's invalidateList() and validateNow() functions > > > respectively. > > > > > > This works fine for short lists, but once the Tree gets long enough > > that > > > a vertical is needed, the tree control starts messing up the data and > > > doesn't show all of the nodes. Department branches start disappearing > > > and duplicates start appearing and disappearing - all a huge mess. > > > I did a trace on the dataProvider (the XMLListCollection) and that is > > > showing me the correct data - so it seems like the tree is the one > > > having trouble keeping up with all these changes. > > > > > > Originally I wanted to filter out the Person nodes with the > > > XMLListCollection's filterFunction, but the filterFilter seems to only > > > work on objects at the top level of the hierarchy, which seems to be a > > > huge limitation. > > > > > > Can anyone help me out ? > > > > > >

