Flex中利用HSlider控件和ArrayCollection类的filterFunction属性对DataGrid中的数据进行过滤的例子
By Minidxer | September 13, 2008
和前面Flex中利用CheckBox对DataGrid控件中的项目进行过滤的例子类似的,接下来的例子演示了Flex中如何利用HSlider控件和ArrayCollection类的filterFunction属性,对DataGrid中的数据进行过滤。
让我们先来看一下Demo(可以右键View Source或点击这里察看源代码):
下面是完整代码(或点击这里察看):
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- verticalAlign="middle"
- backgroundColor="white"
- creationComplete="init();">
- <mx:Script>
- <![CDATA[
- import mx.events.SliderEvent;
- private function init():void {
- if (checkBox.selected) {
- arrColl.filterFunction = sliderFilterFunc;
- arrColl.refresh();
- }
- }
- private function checkBox_change(evt:Event):void {
- if (checkBox.selected) {
- arrColl.filterFunction = sliderFilterFunc;
- } else {
- arrColl.filterFunction = null;
- }
- arrColl.refresh();
- }
- private function slider_change(evt:SliderEvent):void {
- arrColl.refresh();
- }
- private function sliderFilterFunc(item:Object):Boolean {
- var minSlider:uint = slider.values[0];
- var maxSlider:uint = slider.values[1];
- if ((item.value >= minSlider) &&
- (item.value <= maxSlider)) {
- return true;
- } else {
- return false;
- }
- }
- ]]>
- </mx:Script>
- <mx:ArrayCollection id="arrColl">
- <mx:source>
- <mx:Array>
- <mx:Object label="One" value="100" />
- <mx:Object label="Two" value="2" />
- <mx:Object label="Three" value="300" />
- <mx:Object label="Four" value="40" />
- <mx:Object label="Five" value="500" />
- <mx:Object label="Six" value="60" />
- <mx:Object label="Seven" value="700" />
- <mx:Object label="Eight" value="800" />
- <mx:Object label="Nine" value="90" />
- <mx:Object label="Ten" value="100" />
- </mx:Array>
- </mx:source>
- </mx:ArrayCollection>
- <mx:ApplicationControlBar dock="true">
- <mx:Form styleName="plain">
- <mx:FormItem label="filter:">
- <mx:CheckBox id="checkBox"
- selected="true"
- change="checkBox_change(event);" />
- </mx:FormItem>
- <mx:FormItem label="values:">
- <mx:HSlider id="slider"
- minimum="0"
- maximum="1000"
- values="[0,1000]"
- labels="[0,500,1000]"
- thumbCount="2"
- showTrackHighlight="true"
- snapInterval="1"
- tickInterval="100"
- liveDragging="true"
- change="slider_change(event);" />
- </mx:FormItem>
- </mx:Form>
- </mx:ApplicationControlBar>
- <mx:Panel status="{arrColl.length}/{arrColl.source.length} item(s)">
- <mx:DataGrid id="dataGrid"
- dataProvider="{arrColl}"
- verticalScrollPolicy="on" />
- </mx:Panel>
- </mx:Application>
代码:Peter deHaan 翻译/整理/编译:中文Flex例子
Topics:
Flex |
Tags: DataGrid, filterFunction, HSlider, refresh