【问题标题】:Sort DatagridColumn in flex在 flex 中对 DatagridColumn 进行排序
【发布时间】:2011-12-17 16:07:08
【问题描述】:

我在 flex 中有一个 DatagridColumn 有两个名字,TYPE 和 NAME

现在,当我对数据网格列 TYPE 进行排序时,它使用 sortcompare 函数对类型进行排序 并给出包含元素的分组和排序顺序的结果。 前任。如果我按类型排序,我会按分组顺序获得 pdf、doc、ppt 中的元素, 但它们在内部没有排序,例如:对于 pdf 部分,我有以下元素: 类型名称 pdf A1.pdf pdf X2.pdf pdf B1.pdf

这里文件类型是排序的,但是对于特定的文件类型,元素不是,请注意B1出现在X2之后,应该排序

有没有一种方法可以在根据文件类型扩展名对第一个数据网格列进行排序后对第二个数据网格列进行排序?

我使用 sortcomparefunction 根据 type 对元素进行排序,效果很好。 签名是:

私有函数 sortTheTypeColumn(itemA:Object, itemB:Object):int

【问题讨论】:

    标签: actionscript-3 apache-flex datagrid flex3


    【解决方案1】:

    可能是这样的:

        protected function sortTheTypeColumn(x:Object, y:Object):int
        {
            var xType:String = String(x["TYPE"]).toLocaleLowerCase();
            var yType:String = String(y["TYPE"]).toLocaleLowerCase();
    
            var result:int = sortInternalCompare(xType, yType);
    
            if (result == 0)
            {
                var aName:String = String(x["NAME"]).toLocaleLowerCase();
                var bName:String = String(y["NAME"]).toLocaleLowerCase();
    
                result = sortInternalCompare(aName, bName);
            }
    
            return result;
        }
    
        protected function sortInternalCompare(x:String, y:String):int
        {
            if (x == null && y == null)
                return 0;
            if (x == null)
                return 1;
            if (y == null)
                return -1;
    
            var result:int = x.localeCompare(y);
    
            if (result < -1)
                result = -1;
            if (result > 1)
                result = 1;
    
            return result;
        }
    

    【讨论】:

    • @Jason..非常感谢您的指导。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    相关资源
    最近更新 更多