惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿
人人都是产品经理
人人都是产品经理
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园_首页
V
Visual Studio Blog
Last Week in AI
Last Week in AI
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
博客园 - 【当耐特】
MyScale Blog
MyScale Blog
月光博客
月光博客

博客园 - FireYang

blog搬家 AS3的png图片编码器 Flex的全局变量(原创翻译) 关于flex皮肤 设计模式 Adobe Flex 2: Training from the Source 电子书下载 欢迎加入RIA SEED ! 能移动的RichTextEdit - FireYang - 博客园 as 3.0一百个小技巧 有趣的自制卡通软件 Flex 2.0.1中css的新用法 flex 资源 Advanced ActionScript 3 with Design Patterns 北京记事:老刘的珍贵礼物 一个n的flex组件(SpringGraph Flex Component) 一些常用的javascript函数(方法) Apollo测试通知登记 ms的小技巧 actionscript代码练习作品
flex中datagrid中的过滤功能
FireYang · 2006-12-16 · via 博客园 - FireYang

代码来自http://try.flex.org/index.cfm

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                layout
="vertical"
                creationComplete
="initApp()"><mx:Script>
<![CDATA[// On startup
    public function initApp():void
    {
        
// Set filter function
        
// Be careful to set filterFunction
        
// only after ArrayCollection has been
        
// populated.
        myData.filterFunction=processFilter;
    }
// Filter function
    public function processFilter(item:Object):Boolean
    {
        var result:Boolean
=false;// If no filter text, or a match, then true
        if (!item.name.length
                
|| item.name.toUpperCase().indexOf(txtFilter.text.toUpperCase()) >= 0)
        result
=true;return result;
    }
]]
>
</mx:Script><!-- Data (use ArrayCollection) -->
<mx:ArrayCollection id="myData">
    
<mx:source>
        
<mx:Object name="Ben Forta"
            location
="Oak Park, MI"
            phone
="(248)555-5555" />
        
<mx:Object name="Jane Doe"
            location
="New York, NY"
            phone
="(212)555-1234" />
        
<mx:Object name="Jim Jones"
            location
="Atlanta, GA"
            phone
="(414)555-1212" />
        
<mx:Object name="Roberta Roberts"
            location
="Chicago, IL"
            phone
="(312)555-4321" />
        
<mx:Object name="Steve Stevens"
            location
="Boston, MA"
            phone
="(617)555-5656" />
    
</mx:source>
</mx:ArrayCollection><!-- UI -->
<mx:HBox width="100%">
    
<mx:Label text="Filter:"/>
    
<mx:TextInput id="txtFilter"
            width
="100%"
            change
="myData.refresh()"/>
</mx:HBox><mx:DataGrid dataProvider="{myData}"
        width
="100%" height="100%">
    
<mx:columns>
        
<mx:DataGridColumn headerText="Name"
                    dataField
="name"/>
        
<mx:DataGridColumn headerText="Location"
                    dataField
="location"/>
        
<mx:DataGridColumn headerText="Phone"            dataField="phone"/>
    
</mx:columns>
</mx:DataGrid>
</mx:Application>


其中主要的是ArrayCollection的filterFunction属性,他的使用方法如下:
ArrayCollection的filterFunction属性是继承自ListCollectionView的,还有其他类具有这个功能,以下是一个继承关系图,详细的可以看flex 的帮助文件:

filterFunction属性的值是一个函数(Function):
参数:Object类型的一个值,也可以不带参数;
返回值:Boolean类型的值,如果返回值为True就把这个Object放到里面,反之亦然。
其函数格式事例如下:
f(item:Object):Boolean
在函数里面进行处理,以上的例子就是如此:
 public function processFilter(item:Object):Boolean
 {
       var result:Boolean=false;
      // 查看文本框里的字符串长度或字符串的匹配(大小写都可以),然后返回结果。
      if (!item.name.length || item.name.toUpperCase().indexOf(txtFilter.text.toUpperCase()) >= 0)
     result=true;
     return result;
 }
注意:filterFunction函数只有在对象建立的时候和调用reflash()的时候执行的,所以一定要在显示之前调用下reflash(),否则显示就不正常了,切记!切记!