首页 > 网站 > WEB开发 > 正文

6.2.为DataGrid列设定排序函数

2024-04-27 13:52:40
字体:
来源:转载
供稿:网友
本章用到的 Flex3中文教程--homesforsale.xml文件
6.2.1. 问题

我想使用自定义排序逻辑排序复杂对象
6.2.2. 解决办法
给DataGridColumn 标签的sortCompareFunction 属性赋值函数引用以执行自定义排序逻辑。
6.2.3. 讨论
像上一节那样修改DataGrid 并添加自定义排序函数。这个例子使用RangeRenderer 自定义渲染器添加排序函数sortRanges 来显示range 属性列:
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="initApp()">

<mx:HTTPService id="srvurl="assets/homesforsale.xml"
resultFormat="object"
result="onResult(event)"/>

<mx:DataGrid id="gridwidth="100%height="100%"
dataProvider="{homesForSale}">

<mx:columns>
<mx:DataGridColumn headerText="Total No."
dataField="total"/>

<mx:DataGridColumn headerText="City"
dataField="city"/>

<mx:DataGridColumn headerText="State"
dataField="state"/>

<mx:DataGridColumn headerText="Price Ranges [<350K]
[350K -600K]
[>600K]
"
dataField="range"
itemRenderer="RangeRenderer"
sortCompareFunction="sortRanges"/>

</mx:columns>
</mx:DataGrid>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
[Bindable]
private var homesForSale:ArrayCollection;
private function initApp():void {
this.srv.send();
}
private function onResult(evt:ResultEvent):void {
this.homesForSale = evt.result.data.region;
}
private function sortRanges(obj1:Object,
obj2:Object):int{
var value1:Number = obj1.range.range1;
var value2:Number = obj2.range.range1;
if(value1 < value2) {
return -1;
}
else if(value1 > value2){
return 1;
}
else {
return 0;
}
}

]]>
</mx:Script>
</mx:Application>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表