datatables сохраняет выбранное состояние после перерисовки таблицы

0

Использование rowcallback для отображения ранее выбранных строк в таблице после перерисовки... ничего не происходит. Я подтвердил в консоли, что мой "выбранный" массив верен, но обратный вызов, похоже, ничего не делает.

Выбранный хранит значение tr id в его массиве... при обратном вызове, если значение строк находится в этом массиве, к нему должны применяться классы.

$('#sample_1').dataTable({
    "processing": true,
    "serverSide": true,
    "ajax": "/custom/data-tables/process.php",
    // set timestamp as initial sorting
    "aaSorting": [[5,'desc']],
    // change index column
    "columnDefs": [
        {
            "targets": [ 0 ],
            "searchable": false,
            "sortable": false,
            "render": function ( data, type, row ) {
                return '<input type="checkbox" class="checkboxes" value="'+data+'" />';
            }
        }
    ],
    "fnDrawCallback": function() {
        $('#sample_1 .checkboxes, #sample_1 .group-checkable').uniform();
    },
    "rowCallback": function( row, data, displayIndex ) {
        if ( $.inArray(data.DT_RowId, selected) !== -1 ) {
            $(row).addClass('active selected');
        }
    }
});



var selected = [];

$('#sample_1_wrapper').on('change', 'tbody tr .checkboxes', function () {

    var id = $(this).parents('tr').attr("id");
    console.log('id '+id);
    var index = $.inArray(id, selected);
    console.log('index '+index);


    if ( index === -1 ) {
        selected.push( id );
    }
    else {
        selected.splice( index, 1 );
    }
    console.log('selected '+selected);
    // add checked status and 
    var checked = $(this).is(":checked");

    if (checked) {
        $(this).attr("checked", true);
        $(this).parents('tr').addClass("active selected");
    }
    else {
        $(this).attr("checked", false);
        $(this).parents('tr').removeClass("active selected");
    }               
});

Больше информации

Используя консольный журнал в rowCallback до того, как оператор if вернет эти значения:

console.log(data.DT_RowId); console.log (выборочно);

187413 ["187413"]

Итак, 187413 находится в выбранном массиве, так почему он не возвращает правильный ответ?

Теги:
datatables
jquery-datatables

1 ответ

0
Лучший ответ

Если бы t преобразовал в строку - if ($.inArray((data.DT_RowId).toString(), выбрано)> -1) {

Ещё вопросы

Сообщество Overcoder
Наверх
Меню