过滤方法后,jQuery Datatables绘制不起作用

时间:2015-03-25 20:40:57

标签: jquery jquery-datatables

我(尝试)使用jQuery数据表https://datatables.net/

我的表中只有一个列,只有数字。例如:

<table id="queue-table">
    <tr>
        <td>Name</td>
        <td>Count</td>
    </tr>
    <tr>
        <td>joe</td>
        <td>1</td>
    </tr>
    <tr>
        <td>sam</td>
        <td>0</td>
    </tr>
    <tr>
        <td>mike</td>
        <td>2</td>
    </tr>
</table>

我想制作一个过滤器,只显示计数大于0的行。所以我无法进行搜索,因为它可以是1,2,3等......

我尝试使用filter()方法。这是文档https://datatables.net/reference/api/filter()

以下是我的代码:

var table = $('#queue-table').DataTable();

table.column(1).data().filter( function ( value ) {
    return value > 0 ? true : false;
}).draw();

我希望这只用2条记录绘制表格,但它会显示所有行。我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

filter()返回一组已过滤的行,但不会对数据集本身执行过滤。正如您在问题中提供的链接所示:

  

此方法不应与用于的search()DT混淆   在DataTable中搜索记录。 (...)并作为一个提供   DataTables API的实用工具方法

(请参阅下面的演示,了解概念证明 - 您的代码完全按照预期的方式执行:它返回一个包含两行的API实例,其中包含值12

要执行您想要的操作,您可以创建自定义过滤功能:

$.fn.dataTable.ext.search.push(
    function( settings, data, dataIndex ) {
        return parseInt(data[1]) > 0 ? true : false;
    }
);
table.draw();

参见演示 - &gt;的 http://jsfiddle.net/fw8zu34t/