重置 DataTables 中的过滤数据

Posted

技术标签:

【中文标题】重置 DataTables 中的过滤数据【英文标题】:Reset filtered data in DataTables 【发布时间】:2017-02-08 01:00:12 【问题描述】:

我有一个使用 AJAX 检索数据的数据表。然后我有两个过滤数据的搜索功能。一旦使用未过滤的数据,搜索功能就可以正常工作。应用过滤器后,我无法清除过滤器或应用另一个过滤器,因为两个过滤器是互斥的(一个过滤器是全部付费,另一个是全部未付费)。我认为我的问题是,一旦过滤了数据,然后我尝试清除或应用另一个过滤器,它就会作用于数据的子集(已经过滤的数据)。如何在应用新过滤器之前清除重置过滤的数据以及如何重置过滤器。我已经在这个网站上尝试了一些解决方案,但它们没有奏效。这是我的过滤功能。

function outstandingFees() 


$.fn.dataTable.ext.search.push(

    function (settings, data, dataIndex) 

        var zero = 0;
        var fee = parseFloat(data[8]) || 0; // use data for the balance due column

         if (fee > zero) 
            return true;
        

        return false;

    

);

table.draw();




function paidFees() 

$.fn.dataTable.ext.search.push(

    function (settings, data, dataIndex) 

        var zero = 0;

        var fee = parseFloat(data[8]); // use data for the balance due column


        if (fee === zero) 

            return true;

        

        return false;

    

);

table.draw();





function allFees() 

$.fn.dataTable.ext.search.push(

    function (settings, data, dataIndex) 

        var zero = 0;

        var fee = parseFloat(data[8]) || 0; // use data for the balance due column

        if (zero <= fee) 

            return true;

        

        return false;

    

);

table.draw();


【问题讨论】:

您清除了$.fn.dataTable.ext.search.pop() 的自定义过滤器(后进先出) 谢谢。我知道这一定是我缺少的一些简单的东西。这非常有效。我将它添加到两个过滤器函数的顶部,并在 allFees 函数中使用它。 您能否将其放入答案中,以便我们可以看到该问题已得到解答。 【参考方案1】:

正如大卫康拉德所说的

$.fn.dataTable.ext.search.pop()

为我工作。我只是将它添加到每个方法的顶部,以便在应用新过滤器之前清除过滤器。

【讨论】:

以上是关于重置 DataTables 中的过滤数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 Angular-DataTables 更新数据时会重置分页

如何从 Datatables jQuery 插件中提取过滤后的数据?

对 DataTables 中的过滤列求和

jquery Datatables过滤行

DataTables 中的单个下拉列表中的多列过滤

如何将过滤器和订单数据设置到 DataTables 单元格