下面的例子展示了Flex中如何利用一個CheckBox控件以及ArrayCollection類的
filterFunctio
屬性,對DataGrid控件中的項目進行過濾。
下面是具體的例子以及源代碼:
<!--more-->
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <!-- http://blog.flexexamples.com/2008/03/12/using-a-combobox-to-filter-items-in-a-datagrid-in-flex/ -->
- <mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- verticalAlign="middle"
- backgroundColor="white">
- <mx:Script>
- <![CDATA[
- importmx.controls.dataGridClasses.DataGridColumn;
- privatefunction toggleFilter():void {
- if(checkBox.selected) {
- arrColl.filterFunction = processFilter;
- }else {
- arrColl.filterFunction = null;
- }
- arrColl.refresh();
- }
- privatefunction processFilter(item:Object):Boolean {
- returnparseFloat(item.value) == 0;
- }
- privatefunction value_labelFunc(item:Object, col:DataGridColumn):String {
- returnitem[col.dataField].toFixed(2);
- }
- ]]>
- </mx:Script>
- <mx:ArrayCollection id="arrColl">
- <mx:source>
- <mx:Array>
- <mx:Object name="ColdFusion" value="0.00" />
- <mx:Objectname="Dreamweaver" value="0.12" />
- <mx:Object name="Fireworks" value="1.01" />
- <mx:Objectname="Flash" value="0" />
- <mx:Object name="Flash Player" value="-0.00" />
- <mx:Objectname="Flex" value="0.00" />
- <mx:Object name="Illustrator" value="2.92" />
- <mx:Objectname="Lightroom" value="0.32" />
- <mx:Object name="Photoshop" value="0.06" />
- </mx:Array>
- </mx:source>
- </mx:ArrayCollection>
- <mx:Panel status="{arrColl.length}/{arrColl.source.length}item(s)">
- <mx:DataGrid id="dataGrid"
- dataProvider="{arrColl}"
- verticalScrollPolicy="on">
- <mx:columns>
- <mx:DataGridColumn dataField="name" />
- <mx:DataGridColumn dataField="value"
- labelFunction="value_labelFunc" />
- </mx:columns>
- </mx:DataGrid>
- <mx:ControlBar>
- <mx:CheckBox id="checkBox"
- label="FilterDataGrid"
- click="toggleFilter();" />
- </mx:ControlBar>
- </mx:Panel>
- </mx:Application>
下面是執行執行個體(可以右鍵察看源代碼):
本文轉自:http://elanso.com/ArticleModule/sourcearticle.aspx?idx=KAMbHlQwW6I5KeMGQcMGRRIi