You know that the filterFunction is being called because you have a
breakpoint and trace insde it and are running in debug mode right? 
Also, is the filterFunction on the correct ArrayCollection (the main one
and not the extended one)?   The correct order would be:

1.) Add parent object to main ArrayCollection
2.) Add children objects to the parent ArrayCollection
3.) Repeat 1 & 2 for all parents and children
4.) Set filterFunction for main ArrayCollection
5.) Execute refresh() on main ArrayCollection

That's about all that I have; without poking through the code.

-TH

--- In [email protected], "whatabrain" <[EMAIL PROTECTED]> wrote:
>
> Calling refresh() did nothing.
>
> Note that if I choose to filter out all the child nodes, it works
> perfectly. It's only the parent nodes I can't filter, because the
> filter is never called for them.
>
>
> --- In [email protected], "Tim Hoff" TimHoff@ wrote:
> >
> > Anytime that you use a filterFunction or sort on an
> ArrayCollection,
> > it won't be executed until you use call the refresh method.
> > Basically you're saying, ok filter and sort my collection now. It
> > doesn't happen automatically. After #3, and anytime that items are
> > added/changed/removed in the collection, execute the refresh method
> > to re-filter/sort the collection. I'm not sure if this is going to
> > solve your problem, because filtering the parent objects will
> > probably take out the children as well. You may have to just
> create
> > a new collection, from the original (excluding the parents), and
> use
> > that as the DataProvider. But, give refresh a try first.
> >
> > -TH
> >
> > --- In [email protected], "whatabrain" <junk1@> wrote:
> > >
> > > No, I never call refresh(). Here's the sequence:
> > >
> > > 1) Set the filter function.
> > > 2) Add a parent object [filter function is not called]
> > > 3) Add a child object [filter function IS called]
> > >
> > > I've tried adding parents and children later on too, and the
> filter
> > > function is still only called for children.
> > >
> > >
> > > --- In [email protected], "Tim Hoff" <TimHoff@> wrote:
> > > >
> > > >
> > > > "and both are called after the filter is defined"
> > > >
> > > > Are you calling ArrayCollection.refresh() after you finish
> adding
> > > the
> > > > parent and children objects?
> > > >
> > > > -TH
> > > >
> > > > --- In [email protected], "whatabrain" <junk1@> wrote:
> > > > >
> > > > > My filter function is really simple. Something along these
> > lines:
> > > > >
> > > > >
> > > > > private function filterFunc(item:Object):Boolean
> > > > > {
> > > > > return item is ChildObj;
> > > > > }
> > > > >
> > > > > The dataProvider is an ArrayCollection containing ParentObjs.
> > > > > ParentObj extends ArrayCollection, and contains ChildObjs.
> > > > >
> > > > > I call ArrayCollection.addItem() to add either ParentObj or
> > > ChildObj
> > > > > to the tree, and both are called after the filter is defined.
> In
> > > > > fact, I call the ChildObj insert right after the ParentObj
> > insert.
> > > > >
> > > > > Basically, I want to hide all top-level nodes in the tree,
> but
> > the
> > > > > filter function isn't even called for those nodes.
> > > > >
> > > > >
> > > > >
> > > > > --- In [email protected], "Tim Hoff" TimHoff@ wrote:
> > > > > >
> > > > > >
> > > > > > Interesting, I would think that the opposite would occur;
> if
> > > you're
> > > > > > using something like: return item.myfield=="whatever";.
> Sure,
> > > post
> > > > > your
> > > > > > filterFunction; as well as a basic idea of the collection's
> > > > > structure.
> > > > > >
> > > > > > -TH
> > > > > >
> > > > > > --- In [email protected], "whatabrain" <junk1@>
> > wrote:
> > > > > > >
> > > > > > > When I try this, the filter function isn't called for top-
> > > level
> > > > > > > items. It's called for all child nodes in the
> dataProvider,
> > > but
> > > > > not
> > > > > > > for the parent node. Any idea why this might be, or do
> you
> > > need a
> > > > > > > code sample?
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --- In [email protected], "Tim Hoff" TimHoff@
> > wrote:
> > > > > > > >
> > > > > > > >
> > > > > > > > ICollectionView or a filterFuncton can work for this;
> if
> > you
> > > > > don't
> > > > > > > want
> > > > > > > > to mess with the underlying source.
> > > > > > > >
> > > > > > > > -TH
> > > > > > > >
> > > > > > > > --- In [email protected], "Tracy Spratt"
> > <tspratt@>
> > > > > wrote:
> > > > > > > > >
> > > > > > > > > Well, you "hide" a row by removing it from the
> > > dataProvider.
> > > > > > > There is
> > > > > > > > > no direct relationship between a DG row and a
> > dataProvider
> > > > > item.
> > > > > > > > >
> > > > > > > > > Tracy
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > ________________________________
> > > > > > > > >
> > > > > > > > > From: [email protected]
> > > > > > > [mailto:[EMAIL PROTECTED]
> > > > > > > > On
> > > > > > > > > Behalf Of whatabrain
> > > > > > > > > Sent: Thursday, September 04, 2008 8:36 PM
> > > > > > > > > To: [email protected]
> > > > > > > > > Subject: [flexcoders] Hiding a row in an
> > AdvancedDataGrid
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > How do you hide a row in an AdvancedDataGrid? I can't
> > > find any
> > > > > > > method
> > > > > > > > > that lets you get a row by index or item.
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>



Reply via email to