数据表在表重绘后保存选定状态

时间:2014-01-05 17:21:27

标签: jquery datatables jquery-datatables

使用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");
    }               
});

更多信息

在if语句返回以下值之前,使用rowCallback中的控制台日志:

的console.log(data.DT_RowId); 的console.log(选择的);

187413 [ “187413”]

那么,187413是否在选定的数组中,为什么它没有返回正确的响应?

1 个答案:

答案 0 :(得分:0)

转换为字符串 - if($ .inArray((data.DT_RowId).toString(),selected)&gt; -1){