首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在flex中向动态数据网格添加排序比较函数

在flex中向动态数据网格添加排序比较函数
EN

Stack Overflow用户
提问于 2010-05-28 18:35:08
回答 1查看 2.9K关注 0票数 1

我试图在Flex3中创建一个动态数据网格,我有一个列的列表,一个对象的列表,这些对象对应于我从url获取的那些列的数据点。虽然网格工作得很好,但问题是列的排序是按词法顺序进行的。

我知道这可以通过向列添加sortcomparefunction来修复,这在这种情况下并不容易。我试着去做

代码语言:javascript
复制
            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];`

但问题是,我在这里创建的函数对象在每次迭代中都会被覆盖(因为我正在添加列),最终所有列都将只对添加的最后一列进行排序。

请给我一些建议。

EN

回答 1

Stack Overflow用户

发布于 2010-10-19 20:06:49

假设您有一些对象的dynamicColumns数组,您想要从中创建数据网格列。

代码语言:javascript
复制
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是这样的:

代码语言:javascript
复制
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的评论。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2928248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档