时间:2011-10-28 23:51:43

标签: actionscript-3 flex datagrid flex3

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

现在,当我对datagridcolumn TYPE进行排序时,它会使用sortcomparefunction对类型进行排序 并给出包含元素的分组和排序顺序的结果。 恩。如果我按类型排序,我按照分组顺序获取pdf,doc,ppt中的元素, 但它们在内部没有排序,例如:对于pdf部分,我有以下元素: 类型名称 pdf A1.pdf pdf X2.pdf pdf B1.pdf

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

有没有办法在根据文件类型扩展名对第一个datagridcolumn进行排序后对其进行排序?

我使用sortcompare函数根据类型对元素进行排序,效果很好。 签名是:

private function sortTheTypeColumn(itemA:Object,itemB:Object):int

1 个答案:

答案 0 :(得分:0)

可能是这样的:

    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;
    }