2010-08-10 43 views
2

是否有反正我可以使用相同的sortCompareFunction多列而不是为每列添加一个函数,因为我有一个有50列的datagrid,其中40列的dataField不是字符串或数字,它是一个数组,所以列的默认排序不起作用。并且根据adobe的帮助,sortCompareFunction 的两个参数是整个数据提供者元素,而不仅仅是项目的数据,所以这意味着我必须为每列定义40个排序函数。还有其他解决方案吗?Flex:关于DataGridColumn的sortCompareFunction的问题

在此先感谢。

回答

5

您可以指定排序函数那样:

<mx:DataGridColumn dataField="someFieldName" 
    sortCompareFunction="{function(ob1:Object, obj2:Object):int{return mySortFunc(obj1, obj2, 'someFieldName');}}"/>

其中mySortFunc实现这样的:

private function mySortFunc(obj1:Object, obj2:Object, fieldName:String):int{ 
    if (obj1.hasOwnProperty(fieldName) && obj2.hasOwnProperty(fieldName)){ 
     //comparison logic ex. 
     return obj1[fieldName]>obj2[fieldName]?1:(obj1[fieldName]<obj2[fieldName]?-1:0); 
    } 
}

这样你就可以有一个功能,满足您的所有需求排序:)。

+0

非常感谢 – Yasmine 2010-08-10 12:25:22