2010-08-10 73 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