Как отсортировать dojo dgrid как строки, а не как строки

В dojo dgrid у меня есть столбец с плавающей точкой, который я хочу отсортировать. Я нашел этот образец инструкции от Кена Франкеиро из SitePen по сортировке по адресу https://github.com/SitePen/dgrid/issues/276.

    grid.set("sort", function(a,b) {
        if(a.col5 > b.col5) { return 1; }
        if(a.col5 < b.col5) { return -1 }
        return 0;
    });

Поскольку я хочу сортировать их как поплавки, я внес это изменение.

    grid.set("sort", function(a,b) {
        var first = parseFloat(a.col5);
        var second = parseFloat(b.col5);
        if (first > second) { return 1; }
        if (first < second) { return -1 }
        return 0;
    });

Тем не менее, он все еще сортирует их как строки с таким результатом: -0.11 -7.15 0.12 1.25 10.9 2.02

Я на самом деле не уверен, что это вызывает мою функцию; dojo не всегда разрешает точки останова в похожем коде. Поэтому я изменил его и создал функцию сравнения MyFloats(a,b) с кодом компаратора и вызвал его из моего кода grid.set. Я не смог остановиться на точке останова в моей функции.

Следовательно, как правильно сортировать поплавки в столбце?

1 ответ

То, что вы описали полностью, похоже, работает для меня.

Однако если предполагается, что ваши данные будут обрабатываться как числа, в идеале я бы рекомендовал выводить их как таковые, а не строки.

Между тем, RE "Dojo не всегда допускает точки останова", единственное, о чем я могу подумать, вы можете ссылаться на миниатюрную версию Dojo, но все последние версии Dojo поддерживают исходные карты, которые по-прежнему должны позволять вам чтобы увидеть унифицированный код и точку останова в инструментах разработчика браузеров.

Скрипка, на которую я ссылаюсь, в значительной степени использует именно то, что написано в оригинальном посте, но ТАК заставляет меня предоставлять встроенный код для сопровождения JSFiddle, так что вот оно.

var grid = new OnDemandGrid({
    columns: {
        id: 'ID',
        value: 'Value'
    },
    collection: new Memory({ data: [
        { id: 1, value: '-0.11' },
        { id: 2, value: '-7.15' },
        { id: 3, value: '0.12' },
        { id: 4, value: '1.25' },
        { id: 5, value: '10.9' },
        { id: 6, value: '2.02' }
    ] }),
    sort: function (a, b) {
        var first = parseFloat(a.value);
        var second = parseFloat(b.value);
        if (first > second) {
            return 1;
        }
        if (first < second) {
            return -1;
        }
        return 0;
    }
}, 'grid');
Другие вопросы по тегам