`

Flex DataGrid 默认排序

    博客分类:
  • Flex
阅读更多
对于DataGrid的排序今天研究了一个下午,找了不少资料,终于找到了解决方案。发现DataGridColumn的属性sortCompareFunction和sortDescending是点击列头后的排序方式,而要确定默认情况下的排序方式是无效的。可以这样实现:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
    <mx:Script>
    <![CDATA[
    import mx.collections.SortField;
    import mx.collections.Sort;
    import mx.utils.ObjectUtil;
    import mx.collections.ArrayCollection;
    [Bindable]
    private var adg:ArrayCollection = new ArrayCollection([{name:"张三华",age:15,sex:"男"},
                                                           {name:"李四国",age:45,sex:"男"},
                                                           {name:"王七花",age:24,sex:"女"},
                                                           {name:"赵华柳",age:17,sex:"女"},
                                                           {name:"田三华",age:33,sex:"男"},]);
                                                          
                                                          
    private function init():void{
    adg.sort = new Sort();
    adg.sort.fields = [new SortField("age",false,true)];
    adg.refresh();
    dg.dataProvider = adg;
    }

    private function sortRanges(obj1:Object,obj2:Object):int{
    var value1:Number = obj1.age;
    var value2:Number = obj2.age;
    if(value1 > value2 ){
    return 1;
    }else if(value1 < value2 ){
    return -1;
    }else{
    return 0;
    }
    }            
    private function dataFilter():void{
    if(adg.filterFunction == null){
    adg.filterFunction = dataFilter2;
    }
    adg.refresh();
    }          
    private function dataFilter2(item:Object):Boolean{
    var bool:Boolean = true;
    var it:String = item["name"];
    var filter:String = ti.text;
    if(!it || it.toLowerCase().indexOf(filter.toLowerCase()) < 0){
    bool = false;
    }
    return bool;
    }      
    private function sortCompare(obj1:Object,obj2:Object):int{
    return ObjectUtil.numericCompare(obj1.age,obj2.age);
    }                
    ]]>
    </mx:Script>
    <mx:DataGrid id="dg"  x="89" y="46" width="552" height="160">
    <mx:columns>
    <mx:DataGridColumn  headerText="name" dataField="name"/>
    <mx:DataGridColumn headerText="age" dataField="age"/>
    <mx:DataGridColumn headerText="sex" dataField="sex" />
    </mx:columns>
    </mx:DataGrid>
    <mx:Form>
    <mx:FormItem>
    <mx:TextInput id="ti" change="dataFilter()"/>
    </mx:FormItem>
    </mx:Form>
</mx:Application>
重点是黑体字部分,SortField第一个参数是排序的字段,第二个参数用来确定是否区分大小写,第三个参数表示是否按降序排列。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics