views:

518

answers:

2

I have an AdvancedDataGrid with a ArrayCollection as its dataProvider. For instance i have a CheckBox that allows me to show or hide certain rows in the AdvancedDataGrid.

Any idea how i could do that?

+4  A: 

My suggestion would be to use your data provider's filterFunction property. Basically, you can give your data provider a function that will determine whether a given item in the ArrayCollection is excluded or not (if an item is excluded, it won't be displayed in the AdvancedDataGrid, in essence making it "invisible"). The docs for filterFunction can be found here.

What I'd suggest then is that checking the checkbox sets a property on the object in your data provider, which is then used by your filter function to include/exclude rows. Some (very rough) pseudocode follows:

private function checkboxClickHandler( event:MouseEvent ):void
{
    /*
       Based on the MouseEvent, determine the row 
       in the data grid you're dealing with
    */

    myDataProvider[someIndex].checkboxFlag = myCheckBox.selected;
    myDataProvider.refresh(); // calling refresh() re-applies the filter to
                              // account for changes.
}

private function myDataProviderFilterFunction( item:Object ):Boolean
{
     // assuming we want the item to be filtered if checkboxFlag is true
     return !item["checkboxFlag"];
}
Dan
Great, that works! I dind't know that it is that simple :)
Lukas Widmer
Glad I could help!
Dan
A: 

Hi Dan,

Thanks for the tips. I am facing a problem. Do you have a suggestion?

In the ADG with a hierarchical data, I want the data shows on the root node level when the rood tree node is closed, and not show when the root node is open.

Any advice is appreciated.

Thanks,

Patrick

Patrick Wang