Flex3学习轨迹:使用DataGrid实现过滤显示

DataGrid组件主要用于显示数据,其本身有排序,自定义列布局,优化列标题,应用渲染器和项编辑等功能。但是DataGrid并没有实现数据过滤显示功能。

效果图如下:

 


代码如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="12">
    <mx:Script>
        <![CDATA[
            import mx.controls.dataGridClasses.DataGridColumn;
            private function toggleFilter():void 
            {
                if (checkBox.selected) 
                {
                    arrColl.filterFunction = processFilter;
                } 
                else {
                    arrColl.filterFunction = null;
                }
                arrColl.refresh();
            }
            private function processFilter(item:Object):Boolean 
            {
                return parseFloat(item.value) == 0;
            }

            private function value_labelFunc(item:Object, 
                                                    col:DataGridColumn):String 
            {
                return item[col.dataField].toFixed(2);
            }
        ]]>
    </mx:Script>
    <mx:ArrayCollection id="arrColl">
        <mx:source>
            <mx:Array>
                <mx:Object name="ColdFusion" value="0.00" />
                <mx:Object name="Dreamweaver" value="0.12" />
                <mx:Object name="Fireworks" value="1.01" />
                <mx:Object name="Flash" value="0" />
                <mx:Object name="Flash Player" value="0.00" />
                <mx:Object name="Flex" value="0.00" />
                <mx:Object name="Illustrator" value="2.92" />
                <mx:Object name="Lightroom" value="0.32" />
                <mx:Object name="Photoshop" value="0.06" />
            </mx:Array>
        </mx:source>
    </mx:ArrayCollection>
    <mx:Panel title="实现数据过滤显示" width="360" height="240" 
        horizontalAlign="center" 
        status="{arrColl.length}/{arrColl.source.length} 行">
        <mx:ApplicationControlBar dock="true" width="100%">
            <mx:CheckBox id="checkBox" label="过滤数据(value=0)" 
                click="toggleFilter();" />
        </mx:ApplicationControlBar>
        <mx:DataGrid id="dataGrid" dataProvider="{arrColl}" rowCount="5" 
            verticalScrollPolicy="on" width="300">
            <mx:columns>
                <mx:DataGridColumn dataField="name" />
                <mx:DataGridColumn dataField="value" 
                    labelFunction="value_labelFunc" />
            </mx:columns>
        </mx:DataGrid>
    </mx:Panel>
</mx:Application>

集合的关联这里不再赘述,有几点需要注意的地方。

1、AS中使用了toFixed(2)方法对数据进行格式化操作。

2、使用了filterFunction函数完成了判断Value是否等于0的任务。

 private function processFilter(item:Object):Boolean 
            {
                return parseFloat(item.value) == 0;
            }

3、使用refresh()方法进行刷新数据列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值