jquery datatables - 刷新不起作用

时间:2013-01-16 03:50:44

标签: jquery datatables

我有一个用jquery dataTables构建的htnl表。我用的代码是:

var oTable = jQuery('#webcam-table').dataTable({
   "sPaginationType": "full_numbers",
   "bStateSave": true,
   "aaSorting": [[1,"desc"]],
   "aoColumnDefs": [
     { "bSortable": false, "aTargets": [ 4 ] }
   ]
});

此表格还有一个表格,每行都有一个复选框,用户可以选择一个或多个,然后点击删除按钮。这使用jquery ajax

jQuery(".deletebutton").on("click", function(e) {
    e.preventDefault(); //cancel click event on start
    var testchecked = jQuery(':checkbox:checked').length;
    if (testchecked == 0) {
        alert('Please select at least one video');
        e.preventDefault();
    }
    else
    {
        if (confirm("Are you sure you want to delete the selected videos?"))
        {
            var checked = jQuery('input:checkbox:checked').map(function () {
                return this.value;
            }).get();
            var $this = jQuery(this);
            jQuery.ajax({
                type: 'POST',
                url: 'index.php?option=com_recordings&task=deletevideos&format=raw',
                data: {checkedarray:checked},
                success: function(data){
                    jQuery('#deleteform input:checkbox').each(function(){
                        if(this.checked){
                            jQuery('input:checkbox:checked').parents("tr").remove();
                        }
                    });

                }
            });
        }
    }
});

这样做是删除表格中的一行。这是我遇到dataTable的问题,因为它有页面,当我删除一个或多个时,它不刷新表。

所以我认为我应该能够在代码中添加fnDraw

jQuery('#deleteform input:checkbox').each(function(){
       if(this.checked){
            jQuery('input:checkbox:checked').parents("tr").remove();
        }
oTable.fnDraw();

我认为这会在我的AJAX删除后以及删除行后刷新表格。但是这甚至不再删除行也不会相应地更新表。当然,当我手动刷新页面时,一切都很好。关于如何删除所选行然后刷新dataTable的任何想法?

1 个答案:

答案 0 :(得分:3)

DataTable API有一个删除行功能。

fnDeleteRow 删除表格的行

输入参数:

  • {mixed}:要删除的aoData或TR的行的索引 要删除的元素
  • {function | null}:回调函数
  • {bool} [default = true]:是否重绘表格

返回参数:
{array}:已删除的行

代码示例:

$(document).ready(function() {
  var oTable = $('#example').dataTable();

  // Immediately remove the first row
  oTable.fnDeleteRow( 0 );
} );