Flex AdvancedDataGrid表格过滤

来源:互联网 发布:最好网管软件 编辑:程序博客网 时间:2024/05/03 06:54

       AdvancedDataGrid过滤,本质上是其数据源(DataProvider)的过滤,通常来说表格的DataProvider2种数据源:HierarchicalData和平面数据ArrayCollection。因此,表格过滤就是HierarchicalDataArrayCollection的过滤。

    1ArrayCollection的过滤

       ArrayCollection的过滤,相对来说比较简单,ArrayCollection自带filterFunction函数,因此只要设置filterFunction即可实现ArrayCollection的过滤。

       关于filterFunction函数如何使用,大家完全可以参考Adobe的参考手册。

f(item:Object):Boolean

如果指定的项目应保留在视图中,则返回值为 true

如果滤镜是不支持的滤镜,则在访问此属性时 Flex 会引发错误。必须在设置 filterFunction 属性后调用 refresh() 以更新视图。

 

       2HierarchicalData的过滤

       HierarchicalData,其source通常来说是ArrayCollection,本文假设HierarchicalData.source就是ArrayCollection。既然HierarchicalData过滤,也是ArrayCollection的过滤,因此只要判断AdvancedDataGrid.dataprovider是否为HierarchicalData,即可进行HierarchicalDataArrayCollection的过滤。

       下述为一个简单的Demo

<!-- arrayCollection ArrayCollection -->

<mx:AdvancedDataGrid id="adg1" designViewDataType="flat" left="4" top="39" bottom="4" right="4" creationComplete="adg1_creationCompleteHandler(event)" 

                      horizontalScrollPolicy="auto" verticalScrollPolicy="auto" selectionMode="singleRow">

       <mx:dataProvider>

           <mx:GroupingCollection2 id="groupingCollection2" source="{arrayCollection}">

              <mx:Grouping>

                  <mx:GroupingField name="mark">

                     <mx:summaries>

                         <mx:SummaryRow summaryPlacement="group">

                            <mx:fields>

                                <mx:SummaryField2 dataField="inventoryvalue"

                                                label="sum mark inventoryvalue" summaryOperation="SUM"/>

                                <mx:SummaryField2 dataField="inventory"

                                                label="sum mark inventory" summaryOperation="SUM"/>

                                <mx:SummaryField2 dataField="outlets"

                                                label="sum mark outlets" summaryOperation="SUM"/>

                            </mx:fields>

                         </mx:SummaryRow>

                     </mx:summaries>

                  </mx:GroupingField>

       表格adg1dataProviderGroupingCollection2,就是HierarchicalData,我们可以通过下述方法进行过滤,假设filterFunctonfilterFunc

    if(adg1.dataProvider.source is HierarchicalData){

       _datagrid.dataProvider.source.source.filterFunction = filterFunc;

       adg1.dataProvider.source.source.refresh();

       adg1.dataProvider.source.refresh();

    }else{

       adg1.dataProvider.filterFunction = filterFunc;

       adg1.dataProvider.refresh();

    }

 

原创粉丝点击