【问题标题】:jquery datatables - refresh doesn't workjquery 数据表 - 刷新不起作用
【发布时间】:2013-01-16 03:50:44
【问题描述】:

我有一个使用 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 删除和删除行之后刷新表。但这甚至不再删除该行,也不会相应地更新表。当然,当我手动刷新页面时,一切都很好。关于如何删除所选行然后刷新数据表的任何想法?

【问题讨论】:

    标签: jquery datatables


    【解决方案1】:

    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 );
    } );
    

    【讨论】:

    • Hrm,看起来是最好的选择。我想我必须遍历并删除所有已选择的内容。更不用说添加某种索引了。
    猜你喜欢
    • 2015-06-04
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2018-12-29
    • 2014-08-22
    • 1970-01-01
    相关资源
    最近更新 更多