Как использовать пользовательский метод сортировки с Mulitple Sort - PullRequest
0 голосов
/ 26 октября 2018

Я использую таблицу начальной загрузки с расширением Multiple Sort . У меня есть столбец со значениями, которые являются показателями, например, 2 x 10-8, 1 x 10-7, 4 x 10-6 и написал собственный метод сортировки для сортировки этих значений. Метод работает для сортировки столбца при использовании «одиночной» сортировки путем установки sorter: "pValueSorter" как:

$('#table').bootstrapTable({
        exportDataType: 'all',
        filterControl: true,
        columns: [{
            field: 'pValue',
            title: 'P-value',
            sortable: true,
            sorter: "pValueSorter",
            filterControl: 'input'
        }
        ...

, а затем метод как:

function pValueSorter(a, b) {
    sort method here
    ...
}

При использовании расширения MultiplSort есть ли способ использовать этот пользовательский метод, когда этот столбец включен в сортировку?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

В этой статье от 2016 года объясняется, как можно сортировать по нескольким столбцам внутри функции сортировки.

Обычно, если первая проверка возвращает 0, что ложно, она будет обрабатывать следующую проверку и так далее:

var data = [];
(function () {
    var names = ["Logan", "Bub", "Scott", "That-guy"];
    while (data.length < Math.pow(names.length, 2)) {
        data.push({
            age: Math.ceil(Math.random() * names.length),
            name: names[Math.floor(Math.random() * names.length)]
        });
    }
})();
function multiSortData(a, b) {
    return b.name.localeCompare(a.name) || a.age - b.age;
}
function displayData(data) {
    var table = document.createElement("table");
    table.innerHTML = "<tr><td>Name</td><td>Age</td></tr>";
    table.border = "true";
    data.forEach(function (data) {
        var tr = table.appendChild(document.createElement("tr"));
        tr.appendChild(document.createElement("td")).textContent = data.name;
        tr.appendChild(document.createElement("td")).textContent = data.age;
    });
    table.style.cssText = "background-color: #eee;margin: 1em;border: 1 solid;";
    document.body.appendChild(table);
}
//TEST
displayData(data);
displayData(data.sort(multiSortData));
0 голосов
/ 26 октября 2018

Не можете ли вы получить свой столбец через

function pValueSorter(a, b) {
    a.children[colNum]
    b.children[colNum]
    ...
}

если начать с 0?

...