2008-11-12 62 views
2

我正在使用Flex數據網格,並且需要對數列中的某些列進行排序。
看着sortCompareFunction,好像我需要爲每一列我想排序創建一個不同的函數,因爲我的排序函數必須知道它排序在哪個字段上。Flex datagrid通用數字排序函數?

有沒有什麼辦法可以將字段傳遞給函數進行排序?這樣我只需要一個數字排序功能。

回答

1

我沒有使用這個功能吧:

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");
1

每一列,這個工作對我來說(修改從亞歷克斯的答案):

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()); 

一個很不錯的解決方案,考慮如何常見的程序,這可能是..

感謝亞歷克斯,希望這有助於人們進一步。

0

我沒有使用一個數值函數進行排序 - 代替做了以下:

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

這似乎是正確排序。