Flex datagrid универсальная числовая функция сортировки? - PullRequest
2 голосов
/ 12 ноября 2008

Я использую Flex dataGrid, и мне нужно отсортировать некоторые из моих столбцов по номерам.
Глядя на sortCompareFunction, кажется, что мне нужно создать разные функции для каждого столбца, который я хочу отсортировать, потому что моя функция сортировки должна знать, по какому полю она сортируется.

Есть ли способ передать поле для сортировки в функцию? так что мне нужна только одна числовая функция сортировки.

Ответы [ 3 ]

1 голос
/ 06 апреля 2009

Если вы используете DataGrid с провайдером данных XML, это сработало для меня (изменено из ответа Алекса):

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

Очень хорошее решение, учитывая, насколько распространенной является эта процедура ..

Спасибо, Алекс, надеюсь, это поможет людям дальше.

1 голос
/ 12 ноября 2008

Я сделал это с помощью этой функции:

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

и для каждого столбца, в котором требовался набор сортировки

colToBeSorted.sortCompareFunction = fieldNumericSorter("fieldname");
0 голосов
/ 23 ноября 2009

Я не использовал числовую функцию для сортировки - вместо этого сделал следующее:

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

Кажется, сортировка выполняется правильно.

...