Сортировать datatable по скрытому столбцу

Я datatable С id, firstName, lastName, phone, updated поля.

: я добавляю к datatable только четыре поля (id, firstName, lastName и phone). Updated поле скрыто.

вопрос: способ сортировки datatable by updated поле?

мой код:

   $('#table').dataTable({
        sDom: '<"top"fi>tS',
        sScrollY: ($(window).height() - 250) + "px",
        bPaginate: false,
        bDeferRender: true,
        bAutoWidth: false,
        oLanguage: {
            sInfo: "Total: _TOTAL_ entities",
            sEmptyTable: "No pending entities"
        },
        "aoColumnDefs": [
            { "iDataSort": 4, "aTargets": [ 0 ] }
        ],
        "aoColumns": [
            { "sWidth": "10%" },
            { "sWidth": "40%" },
            { "sWidth": "30%" },
            { "sWidth": "20%" },
            { "sTitle": "updated ", "bVisible":false }
        ],
        fnCreatedRow: function( nRow, aData, iDataIndex ) {
            $(nRow).attr('id', aData[0]);
        }
    });

table.fnAddData([id, firstName, lastName, phone, updated]);

3 ответов


из документации:.

iDataSort индекс столбца (начиная с 0!) вы хотите, чтобы сортировка выполнялась, когда этот столбец выбран для сортировки. Это можно использовать, например, для сортировки по скрытым столбцам.

Default: -1 использовать автоматически вычисляемый индекс столбца

Type: int

// Using aoColumnDefs
$(document).ready( function() {
  $('#example').dataTable( {
    "aoColumnDefs": [
      { "iDataSort": 1, "aTargets": [ 0 ] }
    ]
  } );
} );

// Using aoColumns
$(document).ready( function() {
  $('#example').dataTable( {
    "aoColumns": [
      { "iDataSort": 1 },
      null,
      null,
      null,
      null
    ]
  } );
} );

вы можете просто использовать { "iDataSort": 4 } здесь (4-индекс вашего скрытого поля)

var data = [
["1","john","mathew","1234",[]],
["2","Mary","rose","1234","1"],
];

добавить скрытые поля и добавить данные в таблицу

aaData: data,
aoColumns :[
        { "sTitle": "id","bSortable": false },
        { "sTitle": "firstName","bSortable": false, },
        { "sTitle": "lastName", "bSortable": false,},
        {"sTitle": "phone","bSortable": false},
        {"sTitle": "updated ", "bVisible":false },
        ]

для добавления скрытых полей используйте "bVisible":false


я столкнулся с проблемой сортировки скрытого столбца во время выполнения, не знаю, является ли подход допустимым или нет. Я использовал следующие строки, чтобы скрыть столбец через CSS

td:nth-of-type(2) {
display: none;
}

где 2-это ваш столбец, назначьте класс <th class="mycolum1"> и используйте jquery, чтобы отсортировать его как

$("#button").click(function(){
$(".mycolumn").click();
})

извините меня, если подход недействителен, но в моем случае это 100% приемлемо.