删除Datatable上的搜索过滤器

时间:2014-12-10 13:26:34

标签: datatables jquery-datatables datatables-1.10

我在我的DataTable中应用了一个按钮,点击该按钮,过滤数据表,只显示点击的行。

表初始化是:

       var oDatatable = $("#tblDataTable").DataTable({
            dom: '<"top"CRTl><"clear">rt<"bottom"ip><"clear">',
            columns: [
                                   { data: 'Message' },
                { data: 'MessageId' },
                { data: null, "defaultContent": "<button id=\"tblRowData\">Click</button>"}
            ],

            "columnDefs": [
             { "visible": false, "targets": 0 }
            ]
           });

我的点击事件是:

    $('#tblDataTable tbody').on('click', 'button', function (event) {
    var data = oDataTable.row($(this).parents('tr')).data();
    oDataTable
     .columns(8)
     .search(data['MessageId'])
     .draw();

这一切都很好,但是现在我想在页面上执行任何其他操作时重置过滤器。例如,更改日期时间选择器。

如何检查数据表是否应用了搜索过滤器,并将其删除(即在点击事件之前重置表格)。

4 个答案:

答案 0 :(得分:35)

也许你正在看这样的事情:http://www.datatables.net/plug-ins/api/fnFilterClear
您可以通过一种非常简单的方式清除搜索:

var table = $('#example').DataTable();
table
 .search( '' )
 .columns().search( '' )
 .draw();

答案 1 :(得分:1)

更简单

var table = $('#example').DataTable();
table
.search("").draw(); 

答案 2 :(得分:0)

只需添加:

$(tableId).DataTable({
   "dom": "t"
});

答案 3 :(得分:0)

如果您要检查是否已应用现有的搜索过滤器,然后仅清除特定的过滤器,则可以像这样完成它:

    var table = $('#example').DataTable();

    // The index of the column being searched
    var colIdx = 3;

    // Retrieve the current stored state of the table
    var tableState = table.state.loaded();

    // Retrieve the stored search value of the column
    var filterForColIdx = tableState.columns[colIdx].search.search;

    if ( '' !== filterForColIdx ) {
      // Clear the search term and re-draw
      table
       .columns( colIdx )
       .search( '' )
       .draw();
    }

注意:我正在使用数据表上的'stateSave': true选项来保持页面请求之间的状态。