Многостолбцовая сортировка в таблицах данных - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть таблица, и она имеет 8 столбцов. Предположим, что их заголовки v 'A', 'B' ..... 'H'.

Я хочу применить сортировку по нескольким столбцам, например:

Вид по умолчанию: Case1: Если пользователь нажимает на «A» затем сортирует столбец как «A» (des c) -> «B» (как c) -> «E» (как c) -> .... -> 'H '(as c)

И если пользователь снова нажимает на' A ', тогда ничего не должно происходить.

Случай 2: Если пользователь нажимает на' E ', сортировка столбца происходит как' E '(как c) ->' A '(des c) ->' B '(как c) ->' F '(как c) -> .... ->' H '(as c)

И если пользователь снова нажимает на' E ', тогда ничего не должно происходить.

Случай 3: Если пользователь нажимает на' F ', сортировка столбца происходит как' F '(как c) ->' A '(des c) ->' B '(как c) ->' E '(как c) -> .... ->' H '(as c)

И если пользователь снова нажмет' F ', то ничего не произойдет.

пожалуйста, посмотрите на код, что я сделал

$(document).ready(function() {
  window.history.pushState("object or string", "EPAP|AuctionList", contextPath+"/auctions/auctionlist");
  languageList.sEmptyTable = '<spring:message code="auctionlist.emptytable"/>';

  auctionTable = $('#datatable').DataTable({     
    language: languageList,
    order: [[0, 'desc']],
    columnDefs: [
        {targets: 0, orderSequence: ['desc']},
        {targets: 1, orderSequence: ['asc']},
        {targets: 4, orderSequence: ['asc']},
        {targets: 5, orderSequence: ['asc']},
        {targets: 6, orderSequence: ['asc']},
        {targets: 7, orderSequence: ['asc']},           
        {type: "datetime-moment",targets: 5}
    ],

    initComplete: function () {
        $('#datatable th').on('click', function (event) {

            var auctionTable = $('#datatable').DataTable();
            var th = $(this).closest('th');
            var colIndex = auctionTable.column( th ).index();
            console.log(colIndex);

            if (colIndex === 0) {
                console.log('order col 0 ')
                auctionTable.order([[0, 'desc'], [1, 'asc'], [4, 'asc'], [5, 'asc'],[6, 'asc'],[7, 'asc']]).draw();
            }else if (colIndex === 4) {
                console.log('order col 4 ')
                auctionTable.order([[4, 'asc'],[0, 'desc'], [1, 'asc'], [5, 'asc'],[6, 'asc'],[7, 'asc']]).draw();
                }else if (colIndex === 5) {
                    console.log('order col 5 ')
                    auctionTable.order([[5, 'asc'],[0, 'desc'], [1, 'asc'],[4, 'asc'] ,[6, 'asc'],[7, 'asc']]).draw();
                    }else if (colIndex === 6) {
                        console.log('order col6 ')
                        auctionTable.order([[6, 'asc'],[0, 'desc'], [1, 'asc'], [5, 'asc'],[4, 'asc'],[7, 'asc']]).draw();
                        }else if (colIndex ===7) {
                            console.log('order col 7')
                            auctionTable.order([[7, 'asc'],[0, 'desc'], [1, 'asc'], [5, 'asc'],[4, 'asc'],[6, 'asc']]).draw();
                            }          

        });     
    },  

    "aoColumnDefs": [
      { "bSortable": false, "aTargets": [ 2,3,8 ] }
    ] ,

    "ajax": {
      "url": (contextPath + "/auctions/dailyAuctionViewList"),
      "cache": false,
      "asyc":false,
      "dataSrc": ""
    },

Вывод: enter image description here

Что я хочу ?:

  1. Время начала должно быть в порядке "как c", но мы Не удается применить сортировку с использованием времени начала.
  2. Вид по умолчанию: я указываю использование индекса столбца вместо имени столбца [[0, 'des c'], [1, 'как c '], [4,' как c '], [5,' как c '], [6,' как c '], [7,' как c ']]

Первый столбец индекса 0 сортирует, затем 1 индекс и т. Д.

Если пользователь нажимает на 4-й индекс, то [[4, 'as c'], [0, 'des c'], [1, 'as c'], [5, 'as c '], [6,' as c '], [7,' as c ']] 5-й индекс, [[5,' as c '], [0 , 'des c'], [1, 'как c'], [4, 'как c'], [6, 'как c'], [7, 'как c ']], то же самое для 6-го и 7-го индекса

Но столбцы в выходном изображении сортируются неправильно.

Примечание: Краткое описание в https://s.docworkspace.com/docs/3Hj58r9qB Пожалуйста, помогите мне, так как это мой первый день на таблицах данных.

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...