Добавление функции сравнения в Dynamic Data Grid в flex
Я пытаюсь создать динамическую сетку данных в Flex 3, у меня есть список столбцов, список объектов, которые соответствуют точкам данных для тех столбцов, которые я получаю из URL. Хотя сетка работает отлично, проблема в том, что сортировка по столбцам выполняется в лексическом порядке.
Мне известно, что это можно исправить, добавив функцию sortcompare к столбцу, что в данном случае непросто. Я пытался делать
var dgc:DataGridColumn = new DataGridColumn(dtf);
f1[dtf] = function(obj1:Object, obj2:Object):int {
return Comparators.sortNumeric(obj1[dtf],obj2[dtf]);
};
dgc.sortCompareFunction = f1[dtf];`
Но проблема в том, что объект функции, который я создаю здесь, перезаписывается на каждой итерации (так как я добавляю столбцы), и в итоге все столбцы будут отсортированы только по последнему добавленному столбцу.
Предложения, пожалуйста.
1 ответ
Предположим, у вас есть массив dynamicColumns некоторых объектов, из которых вы хотите создать столбцы таблицы данных.
var columns:Array = new Array();
for (var i:int = 0; i < dynamicColumns.length; i++) {
var column:DataGridColumn = new DataGridColumn(dynamicColumns[i].label);
var dataGridColumnSortingHelper:DataGridColumnSortingHelper = new DataGridColumnSortingHelper(column);
column.sortCompareFunction = dataGridColumnSortingHelper.columnSortCompareFunction;
columns.push(column);
}
yourDataGrid.columns = columns;
Где DataGridColumnSortingHelper выглядит так:
public class DataGridColumnSortingHelper
{
private var column:DataGridColumn;
// Constructor
public function DataGridColumnSortingHelper(column:DataGridColumn)
{
this.column = column;
}
// Public Methods
public function columnSortCompareFunction(item1:Object, item2:Object):int
{
// define your custom function here and use column field to know what column you sorting by...
return 0;
}
}
Спасибо Тому за комментарий.