Сортировка DatagridColumn в flex - PullRequest
0 голосов
/ 29 октября 2011

У меня есть DatagridColumn в flex с двумя именами, TYPE и NAME

Теперь, когда я сортирую столбец данных TYPE, он сортирует тип, используя sortcomparefunction и дает результат, который содержит сгруппированный и отсортированный порядок элементов. ех. если я сортирую по типу, я получаю элементы в pdf, doc, ppt в сгруппированном порядке, но они внутренне не отсортированы, например: для части pdf у меня есть такие элементы, как: НАИМЕНОВАНИЕ ТИПА pdf A1.pdf pdf X2.pdf pdf B1.pdf

здесь типы файлов отсортированы, но для определенного типа файлов элементов нет, обратите внимание, что B1 появляется после X2, который должен быть отсортирован

Есть ли способ сортировки второго столбца данных после сортировки первого по расширениям типов файлов?

Я использую sortcomparefunction для сортировки элементов по типу, который работает нормально. подпись:

закрытая функция sortTheTypeColumn (itemA: Object, itemB: Object): int

1 Ответ

0 голосов
/ 29 октября 2011

Может быть что-то вроде:

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