Flex datagrid通用数字排序功能?

时间:2008-11-12 14:46:47

标签: flex sorting datagrid

我正在使用Flex dataGrid,需要以数字方式对我的一些列进行排序 查看sortCompareFunction,似乎我需要为每个要排序的列创建一个不同的函数,因为我的sort函数必须知道它正在排序的字段。

有没有办法可以将字段传递给函数?所以我只需要一个数字排序功能。

3 个答案:

答案 0 :(得分:1)

我是用这个函数做的:

function fieldNumericSorter(field:String):Function {
    return function (obj1:Object, obj2:Object):int {
        return sign( int(obj1[field]) - int(obj2[field]) );
    }
}

以及需要排序集的每列

colToBeSorted.sortCompareFunction = fieldNumericSorter("fieldname");

答案 1 :(得分:1)

如果您正在使用带有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());

一个非常好的解决方案,考虑到这可能是一个多么常见的程序..

感谢Alex,希望这能进一步帮助人们。

答案 2 :(得分:0)

我没有使用数字函数进行排序 - 而是执行以下操作:

arrayCollObject.addItem({Col1:rowData [0],Col2:parseFloat(rowData [1])});

这似乎正确地进行了排序。