2017-06-16 42 views
0

我設法用按鈕單擊重置列,但表不刷新。Jquery DataTable重置多個搜索列

例如,假設表格上有10條記錄,我搜索2個不同的列,以便表格現在顯示2條記錄。

如果我點擊重置按鈕,它會清除文本,但它仍然只在表格上顯示2條記錄。如果我然後輸入任何東西到輸入字段進行搜索,它會顯示所有10條記錄。

爲什麼我必須鍵入一些東西,是否應該在點擊按鈕後重置表格?

<script> 
$(document).ready(function() { 

    var table = $('#everyonesTable').DataTable({ 
    colReorder:   true, 
    stateSave:   true, 
    "lengthMenu": [ 
     [10], 
     [10] 
    ], 

    scrollX:   true, 
    scrollCollapse:  true, 
    paging:    true, 
    fixedColumns:  true, 
    dom: ' <"top"B>rt<"bottom"fpi><"clear">', 

    buttons: [{ 
     "extend": 'colvis', 
     "collectionLayout": 'fixed four-column' 
    }], 
    }); 

    new $.fn.dataTable.Buttons(table, { 
    buttons: [{ 
     text: 'Clear Filters', 
     action: function(e, dt, node, config) { 
      $("[data-index='1']").val(''); 
      $("[data-index='2']").val(''); 
      $("[data-index='3']").val(''); 
      var datatable = $('#everyonesTable').dataTable().api(); 

      $.get('myUrl', function(newDataArray) { 
      datatable.clear(); 
      datatable.rows.add(newDataArray); 
      datatable.draw(); 
      }); 
     } 
     }, 
     { 
     text: 'Reset Columns', 
     action: function(e, dt, node, config) { 
      table.colReorder.reset(); 
     } 
     } 
    ] 
    }); 

    table.buttons(1, null).container().appendTo(
    table.table().container() 
); 



    columnDefs: [{ 
    targets: 1, 
    render: function(data, type, row) { 
     return type === 'display' && data.length > 5 ? 
     data.substr(0, 5) + '…' : 
     data; 
    } 
    }] 



    $(table.table().container()).on('keyup', 'tfoot input', function() { 
    table 
    .column($(this).data('index')) 
    .search(this.value) 
    .draw(); 
    }); 

}); 
</script> 

回答

1

嘗試復位後重繪表:

text: 'Reset Columns', 
     action: function(e, dt, node, config) { 
      table.colReorder.reset(); 
      table.draw(); 
     } 
+0

相同的結果,原來的問題 –

+0

奇怪...嘗試table.fnFilterClear(); – Simon