我正在使用Flex数据网格,并且需要对数列中的某些列进行排序。
看着sortCompareFunction,好像我需要为每一列我想排序创建一个不同的函数,因为我的排序函数必须知道它排序在哪个字段上。Flex datagrid通用数字排序函数?
有没有什么办法可以将字段传递给函数进行排序?这样我只需要一个数字排序功能。
我正在使用Flex数据网格,并且需要对数列中的某些列进行排序。
看着sortCompareFunction,好像我需要为每一列我想排序创建一个不同的函数,因为我的排序函数必须知道它排序在哪个字段上。Flex datagrid通用数字排序函数?
有没有什么办法可以将字段传递给函数进行排序?这样我只需要一个数字排序功能。
我没有使用这个功能吧:
function fieldNumericSorter(field:String):Function { return function (obj1:Object, obj2:Object):int { return sign(int(obj1[field]) - int(obj2[field])); } }
和如果您正在使用与XML数据提供程序将DataGrid是需要排序设置
colToBeSorted.sortCompareFunction = fieldNumericSorter("fieldname");
每一列,这个工作对我来说(修改从亚历克斯的答案):
private function xmlDataGridNumericSorter(field:String):Function
{
return function (obj1:Object, obj2:Object):int
{
var num:Number = ((Number)(obj1.attribute(field)) - (Number)(obj2.attribute(field)));
return (num > 0) ? 1 : ((num < 0) ? -1 : 0);
}
}
和
dataGridColumn.sortCompareFunction = xmlDataGridNumericSorter(xmlAttribute.name().toString());
一个很不错的解决方案,考虑如何常见的程序,这可能是..
感谢亚历克斯,希望这有助于人们进一步。
我没有使用一个数值函数进行排序 - 代替做了以下:
arrayCollObject.addItem({Col1中:rowData [0],Col2中:parseFloat(rowData [1])});
这似乎是正确排序。