flex,datagrid数值列排序

最近使用flex的datagrid发现一问题,如果该dataGrid有一列是数值列,点击表头排序的时候希望它按数字来排的。可是它默认是排序方式按字符串排序的。
解决问题的方式很简单可以自定义排序方法,然后和dataGrid的该列的sortCompareFunction绑定。
代码如下:
<?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.rpc.http.mxml.HTTPService;
import flash.events.*;
import mx.rpc.events.ResultEvent;

public var interfaceXmlList:XMLList;
public function init(){

var http_refreshmap:HTTPService=new HTTPService();
http_refreshmap.url="c://switch.xml";
http_refreshmap.resultFormat="xml";
http_refreshmap.useProxy=false;
http_refreshmap.addEventListener(ResultEvent.RESULT,refreshMap);
http_refreshmap.send();
}
//安数值大小排序
public function sortcompare(obj1:Object,obj2:Object):int
{

var num1:Number=Number(obj1.@send.toString());
trace(num1);
var num2:Number=Number(obj2.@send.toString());
trace(num2);
if(num1>num2){
return 1;
}else if(num1<num2){
return -1;
}else{
return 0;
}
}
public function refreshMap(e:ResultEvent):void{
var dataXml:XML=(XML)(e.result);

var interfacesAttr:XML=new XML();
interfacesAttr=XML(dataXml["interfaces"]);

interfaceXmlList=interfacesAttr.children();
trace(interfaceXmlList.toString());
trace("2222");
dgPosts.dataProvider=interfaceXmlList;
}

]]>
</mx:Script>

<mx:DataGrid id="dgPosts" x="20" y="20" width="400">
<mx:columns>
<mx:DataGridColumn headerText="ss" dataField="@receive" width="200" sortable="true" sortCompareFunction="sortcompare"/>
<mx:DataGridColumn headerText="分" dataField="@send" width="200" sortable="true" sortCompareFunction="sortcompare"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>



sortcompare为自定义的排序方法send在XML中是以属性的形式出现故加@.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值