我正在尝试在Flex 3中创建动态数据网格,我有一个列的列表,这些列对应于我从网址获取的那些列的数据点。虽然网格工作得很好,但问题是列的排序是按词法顺序完成的。
我知道可以通过向列添加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];`
但问题是我在这里创建的函数对象在每次迭代中被覆盖(因为我正在添加列),并且最终所有列都将仅在添加的最后一列上进行排序。
建议请。
答案 0 :(得分:2)
让我们假设你有一些想要创建datagrid列的对象的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;
}
}
感谢Tom发表评论。