从页面中删除最后一条记录后,jquery datatable未重置

时间:2017-11-03 10:15:59

标签: javascript jquery datatable

我正在使用jQuery datatable状态保存:true每页分页10条记录。我有31条记录,所以在第4页只有1条记录。

如果我删除此记录,则表示没有在页面上找到记录,理想情况下它应该移至上一页或第一页。

请帮我解决这个问题。

下面是代码

dataTable = $('.tab-pane.active').find('#' + table).DataTable({
                "lengthMenu": [[10, 25, 50, 100, 250, 500, '-1'], [10, 25, 50, 100, 250, 500, 'All']],
                "processing": true,
                "serverSide": true,
                "responsive": true,
                "scrollX": true,
                "autoWidth": false,
                "stateSave": true,
                "stateSaveParams": function (settings, data) {
                    data.search.search = "";
                },
                "aoColumnDefs": [
                    {'bSortable': false, 'aTargets': [-2, -1]}
                ],
                "initComplete": function ( ) {
                    $('.overlay').fadeOut();
                },
                "ajax": {
                    url: MY_URL,
                    type: "POST", // method  , by default get
                    data: postObj
                }
            }).on('preXhr.dt', function (e, settings, data) {
                if (settings.jqXHR)
                    settings.jqXHR.abort();
            });

要删除的操作是

academic_master.deleteMaster = function (currentClick)
        {
            var id = currentClick.attr('data-id');
            var delete_id = currentClick.attr('delete-id');
            var action = currentClick.attr('action');

            var data = 'id=' + id + '&delete_id=' + delete_id + '&action=' + action;
            $.ajax({
                type: 'POST',
                url: DELETE_URL,
                data: data,
                datatype: 'json',
                async: false,
                success: function (response) {
                    if (response != '-1' && response != '-20')
                    {
                        dataTable.ajax.reload(null, false);
}
});
}

我曾经调用上面这个函数来删除记录,并且成功时它会重新加载表,但是如果该页面上没有记录,则会在同一页面上重新加载。

2 个答案:

答案 0 :(得分:1)

根据文档,分页不会在您的方法中重置。

// user paging is not reset on reload
dataTable.ajax.reload( null, false );

如果你在线下使用,你的分页会重置。但它不会移到上一页。

dataTable.ajax.reload();

建议:如果您遵循此方法,您将能够改进功能/可用性 https://datatables.net/examples/api/select_single_row.html

答案 1 :(得分:0)

//create data table object

var dataTable = $('#tableView').DataTable();

//add class "selected" to the row selected

dataTable.$('tr.selected').addClass('selected');

//I have a button in one of the td of the row. onclicking the button, I assign the class "selected" to the row

$(ths).parents('tr').addClass('selected');

//to delete or remove the row, call the below code

dataTable.row('.selected').remove().draw( false );