I made some progress on my 'filtering hierarchical data' issue.

Using a 'GroupingCollection' and calling 'refresh' on it whenever the
text in the search box changed I was able to get a properly function
serarch. However, in the new Beta 2 the 'openItems' property of the
AdvancedDataGrid is gone.

Can anyone 'in the know' comment on why it was removed? How should one
keep a tree open after a 'refresh'?

My test code below for anyone who is interested ...

Paul


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
    layout="absolute"
    applicationComplete="init()">
    <mx:Script>
        <![CDATA[
        import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
        import mx.collections.GroupingField;
        import mx.collections.Grouping;
        import mx.collections.ArrayCollection ;
        import mx.collections.GroupingCollection;


                public function init() : void {
                        flatData.filterFunction = myFilter;
                }
                public function myFilter(item:Object) : Boolean {
                        var pattern:String = '.*' + search.text + '.*';

                        if (item.hasOwnProperty('Territory')) {
                                 if (item.Territory.match(pattern)) {
                                        return true;
                                } else {
                                        return false;
                                }
                        }
                        return true;
                }
                
                public function updateFilter() : void {         
                        groupedData.refresh();
                }
                
        [Bindable] private var flatData:ArrayCollection = new
        ArrayCollection(
        [

        { Territory:"Nevada", Territory_Rep:"Barbara Jennings",
Estimate:40000 , Actual:38865 },
        { Territory:"Nevada", Territory_Rep:"Dana Binn" ,
Estimate:30000 , Actual:29885 },
        { Territory:"Nevada", Territory_Rep:"Joe Schmoe" ,
Estimate:30000 , Actual:29134 },
        { Territory:"Northern California" , Territory_Rep:"Lauren
Ipsum" , Estimate:40000 , Actual:38805 },
        { Territory:"Northern California" , Territory_Rep:" T.R.
Smith" , Estimate:40000 , Actual:55498 },
        { Territory:"Southern California" , Territory_Rep:"Jane Grove"
, Estimate:45000 , Actual:44913 },
        { Territory:"Southern California" , Territory_Rep:"Alice Treu"
, Estimate:45000 , Actual:44985 },
        { Territory:"Nevada" , Territory_Rep:"Bethany Pittman" ,
Estimate:45000 , Actual:52888 } ,

        ]);

        ]]>
    </mx:Script>
    <mx:HBox>
            <mx:Label text="Territory" />
                    <mx:TextInput id="search" text="" change="updateFilter()"/>
    </mx:HBox>

    <mx:AdvancedDataGrid id="adg"
creationComplete="groupedData.refresh()" x=" 29.5" y="26" width="555"
height="377">
        <mx:dataProvider>
            <mx:GroupingCollection id="groupedData" source="{flatData}" >

                <mx:Grouping>
                    <mx:GroupingField name="Territory" >
                        <mx:summaries>
                            <mx:SummaryRow summaryPlacement="group">
                                <mx:fields>
                                    <mx:SummaryField
dataField="Estimate" operation="SUM" label="Budget"/>
                                    <mx:SummaryField
dataField="Actual" operation="SUM" />
                                </mx:fields>
                            </mx:SummaryRow>
                        </mx:summaries>
                    </mx:GroupingField>
                </mx:Grouping>
            </mx:GroupingCollection>
        </mx:dataProvider>
        <mx:columns>
            <mx:AdvancedDataGridColumn width="200" headerText =
"Territory Rep" dataField="Territory_Rep"/>
            <mx:AdvancedDataGridColumn headerText="Budget" dataField="Budget"/>
            <mx:AdvancedDataGridColumn headerText = "Actual"
dataField="Actual"/>
        </mx:columns>
    </mx:AdvancedDataGrid>

</mx:Application>

Reply via email to