【问题标题】:Destroy datatable tables on modal-close在模态关闭时销毁数据表
【发布时间】:2017-05-01 18:55:10
【问题描述】:

首先道歉,因为这可能会重复,因为在继续之前我已经搜索了其他解决方案,但仍然无法弄清楚。我在这段代码中初始化了 Datatables 表:-

$('#get_contacts').on('show.bs.modal', function(e)
{
$('#contacts_table').DataTable({
    deferRender: true,
    responsive: true,
    'bPaginate': false,
    'bInfo': false,
    ajax: 'send_sms_lib.php?mode=listContacts',
    columns: [
      {data:'contact_id'},
        {data:'contact_name'},
        {data:'mobile_numb'},
        {data:'contact_id'}
    ],
    'columnDefs': [{
           'targets': 3,
           'searchable': false,
           'orderable': false,
           'render': function (data, type, row){
              return '<input type="checkbox" id="no" name="no" value="'+data+'">';
           }
        }]
  });
/* *comment temporary since I'm doing my own testing*
  $('#group_table').DataTable({
    deferRender: true,
    responsive: true,
    'bPaginate': false,
    'bInfo': false,
    ajax: 'send_sms_lib.php?mode=listGroup',
    columns: [
      {data:'group_id'},
        {data:'group_name'},
        {data:'contact_name'},
        {data:'group_id'}
    ],
    'columnDefs': [{
           'targets': 3,
           'searchable': false,
           'orderable': false,
           'render': function (data, type, row){
              return '<input type="checkbox" id="no" name="no" value="'+data+'">';
           }
        }]
  });

  $('#global_contacts_table').DataTable({
    deferRender: true,
    responsive: true,
    'bPaginate': false,
    'bInfo': false,
    ajax: 'send_sms_lib.php?mode=listGlobalContacts',
    columns: [
      {data:'contact_id'},
        {data:'contact_name'},
      {data:'mobile_numb'},
      {data:'department'},
        {data:'contact_id'}
    ],
    'columnDefs': [{
           'targets': 4,
           'searchable': false,
           'orderable': false,
           'render': function (data, type, row){
              return '<input type="checkbox" id="no" name="no" value="'+data+'">';
           }
        }]
  });

  $('#global_group_table').DataTable({
    deferRender: true,
    responsive: true,
    'bPaginate': false,
    'bInfo': false,
    ajax: 'send_sms_lib.php?mode=listGlobalGroup',
    columns: [
      {data:'group_id'},
        {data:'group_name'},
        {data:'contact_name'},
      {data:'department'},
        {data:'contact_id'}
    ],
    'columnDefs': [{
           'targets': 4,
           'searchable': false,
           'orderable': false,
           'render': function (data, type, row){
              return '<input type="checkbox" id="no" name="no" value="'+data+'">';
           }
        }]
  });*/
});

但是当我启动模态时,它会不断弹出错误,如下所示:-

DataTables 警告:表 id=contacts_table - 无法重新初始化 数据表。有关此错误的更多信息,请参阅 http://datatables.net/tn/3

我想销毁或如果可能的话将其称为取消初始化表格,因为该模式由多个菜单选项卡组成,并打算销毁另一个选项卡的表格以从选定的表格中重新初始化表格。这是我打算执行销毁过程的代码:-

$('#get_contacts').on('hidden.bs.modal', function () {

});

【问题讨论】:

    标签: jquery datatables bootstrap-modal


    【解决方案1】:

    我已经尝试了@Nishanth Matha 的答案,并在此处添加了其余的数据表代码:-

    $('#get_contacts').on('hidden.bs.modal', function () {
      $('#contacts_table').dataTable().fnDestroy();
      $('#group_table').dataTable().fnDestroy(); 
      $('#global_contacts_table').dataTable().fnDestroy(); 
      $('#global_group_table').dataTable().fnDestroy(); 
    });
    

    它的结果是问题中的消息不再出现。

    【讨论】:

      【解决方案2】:

      尝试使用.fnDestroy()

      $('#get_contacts').on('hidden.bs.modal', function () {
          $('#contacts_table').dataTable().fnDestroy();
      });
      

      【讨论】:

      • 它正在工作!谢谢@Nishanth Matha。我在这里添加了其余的数据表代码:- $('#get_contacts').on('hidden.bs.modal', function () { $('#contacts_table').dataTable().fnDestroy(); $('#group_table').dataTable().fnDestroy(); $('#global_contacts_table').dataTable().fnDestroy(); $('#global_group_table').dataTable().fnDestroy(); });
      • 试试吧,它不符合您的建议。我很高兴让您检查我的答案,以便在必要时对其进行修改,以便我再次测试。谢谢! =)
      • 我通过删除尾部, 来尝试这个$('#get_contacts').on('hidden.bs.modal', function () { $('#contacts_table#group_table#global_contacts_table#glob‌​‌​al_group_table').d‌​a‌​taTable().fnDestr‌​oy(‌​); });,但表卸载,只是加载了标题。有没有我还在想念的地方?
      • 还是一样,不能按照你的建议工作。但是 nvm,我会保留我的第一条评论,非常感谢您的帮助和支持。
      猜你喜欢
      • 2017-08-13
      • 2012-08-13
      • 1970-01-01
      • 2013-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      相关资源
      最近更新 更多