data provider:高级数据绑定

基于ListBase的flex组件从 data provider 获取数据。dataProvider提供了复杂数据类型,如Array,ArrayCollection,XML,XMLCollection等。dataProvider可以用mxml及AS两种方式定义。下面例子中的四个List展现同样的内容:
<? xml version="1.0" encoding="utf-8" ?>
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml"  layout ="horizontal" >
    
< mx:Script >
        
<![CDATA[
            [Bindable]
            private var myArray:Array = ["a","b","c"];
            
            [Bindable]
            private var xml:XML = 
            <nodes>
                    <node label="a"/>
                <node label="b"/>
                <node label="c"/>
            </nodes>;
        
]]>
    
</ mx:Script >
    
    
< mx:List  dataProvider ="{myArray}"  width ="50"  height ="200" />
    
< mx:List  dataProvider ="{xml.children()}"   labelField ="@label"   width ="50"  height ="200" />
    
< mx:List   width ="50"  height ="200" >
        
< mx:dataProvider >
            
< mx:Object  label ="a" />
            
< mx:Object  label ="b" />
            
< mx:Object  label ="c" />
        
</ mx:dataProvider >
    
</ mx:List >
    
< mx:List    width ="50"  height ="200"  labelField ="@label" >
        
< mx:dataProvider >
        
< mx:XMLList >
                
< node  label ="a" />
                
< node  label ="b" />
                
< node  label ="c" />             
        
</ mx:XMLList >
            
        
</ mx:dataProvider >
    
</ mx:List >
    
</ mx:Application >


如果使用Collection,可以保证数据同步并提供简单数据操作,比如排序和过滤。下面的例子演示了同步,排序和过滤:
<? xml version="1.0" encoding="utf-8" ?>
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml"  layout ="horizontal"  creationComplete ="init()" >
    
< mx:Script >
        
<![CDATA[
            import mx.collections.SortField;
            import mx.collections.Sort;
            import mx.collections.ArrayCollection;
            [Bindable]
            //private var myArray:Array =  ["c","b","a"];
            private var myArray:ArrayCollection = new ArrayCollection( ["c","b","a"]);
            private function sort(){                
                var sort:Sort = new Sort();
                sort.fields = [new SortField()];
                myArray.sort = sort;
                myArray.refresh();
                myArray.sort.fields = new Array();
            }
            
            private function filter(item:Object):Boolean{
                if("a"==item)
                    return false;
                else
                    return true;
            }
        
]]>
    
</ mx:Script >
    
    
< mx:List  dataProvider ="{myArray}"  width ="50"  height ="200" />
    
<!-- <mx:Button label="add" click="myArray.push(myArray.length)"/> -->
    
< mx:Button  label ="add"  click ="myArray.addItem(myArray.length)" />
    
< mx:Button  label ="sort"  click ="sort()" />
    
< mx:Button  label ="filter"  click ="myArray.filterFunction=filter;myArray.refresh();" />
</ mx:Application >

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值