最近使用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中是以属性的形式出现故加@.
分享到:
相关推荐
### flex DataGrid中文字符排序类解析 在Flex开发过程中,数据展示与管理是十分重要的环节。其中DataGrid作为展示表格数据的重要组件之一,在处理多语言环境尤其是中文字符时,经常面临排序难题。本文将深入分析一...
1. **DataGrid组件**:DataGrid是Flex中用于展示结构化数据的组件,它可以显示多列数据,并支持排序、选择和编辑等功能。在创建DataGrid时,我们需要指定数据源(通常是ArrayCollection或XMLListCollection)。 2. ...
3. 自定义列渲染:为特定列设置自定义的渲染器,例如将数值格式化为货币或百分比。 4. 用户交互:实现选中行、编辑单元格、添加新行和删除行等功能,提升用户体验。 5. 分页功能:当数据量较大时,实现分页加载,...
2. **排序**:用户应能按列对数据进行升序或降序排序,这可以通过监听DataGrid的sort事件并处理排序逻辑来实现。 3. **自定义列渲染**:根据需求,我们可能需要对不同列的数据进行格式化或显示额外信息,例如,日期...
4. Datagrid:Datagrid 是一个可滚动的数据表格,可以显示多列数据,并支持排序、选择和编辑功能。 5. Horizontallist:Horizontallist 是一个水平滚动的列表,常用于展示一组水平排列的项目。 6. Hrule:Hrule ...
如果这个文件是子类,那么它可能添加了对特定列数据进行统计计算的能力,例如,对数值列进行求和或求平均。 `新建文本文档.txt`虽然没有明确的关联,但通常这种文本文件可能包含代码注释、算法解释或统计数据的描述...
用最快速的方式给一个数值型数组按大小排序。 - **答案**:使用`sort()`方法。 ```as3 var numArray:Array = [4, 1, 3, 2]; numArray.sort(); ``` #### 16. 如何在数组里面查找元素? - **答案**:使用`...
- **`getPhoneLabel`**: 该函数用于自定义DataGrid中某一列的显示内容。例如,可以去除电话号码中的“-”字符,以实现更美观的显示效果。 ```actionscript private function getPhoneLabel(item:Object, column:...
DataGrid用于展示表格形式的数据,支持排序、过滤等功能,适用于数据展示和编辑的场景。 #### HorizontalList HorizontalList组件用于创建水平布局的项目列表,适合用于显示一系列水平排列的元素。 #### HRule ...
DataGrid组件是一种用于显示表格数据的容器,支持排序、分页等功能。 ##### 5. **HorizontalList** HorizontalList组件可以水平排列其子项,适合制作水平滚动的列表或菜单。 ##### 6. **HRule** HRule组件用于...