Использование 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 находится в выбранном массиве, так почему он не возвращает правильный ответ?
Если бы t преобразовал в строку - if ($.inArray((data.DT_RowId).toString(), выбрано)> -1) {