我正在使用 Flex dataGrid,并且需要对我的一些列进行数字排序。
查看 sortCompareFunction,似乎我需要为要排序的每一列创建一个不同的函数,因为我的排序函数必须知道它正在排序的字段。
有什么方法可以将要排序的字段传递给函数?这样我只需要一个数字排序功能。
我正在使用 Flex dataGrid,并且需要对我的一些列进行数字排序。
查看 sortCompareFunction,似乎我需要为要排序的每一列创建一个不同的函数,因为我的排序函数必须知道它正在排序的字段。
有什么方法可以将要排序的字段传递给函数?这样我只需要一个数字排序功能。
如果您使用带有 XML dataProvider 的 DataGrid,这对我有用(根据 Alex 的回答修改):
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());
一个非常好的解决方案,考虑到这可能是一个多么常见的过程..
谢谢亚历克斯,希望这可以进一步帮助人们。
我使用这个功能做到了:
函数字段数字排序器(字段:字符串):函数{ 返回函数(obj1:Object,obj2:Object):int { 返回符号(int(obj1[field])-int(obj2[field])); } }
并且对于需要排序集的每一列
colToBeSorted.sortCompareFunction = fieldNumericSorter("fieldname");
我没有使用数字函数进行排序 - 而是执行了以下操作:
arrayColObject.addItem({Col1: rowData[0], Col2: parseFloat(rowData[1])});
这似乎正确地进行了排序。