Datatables JQuery - 根据JSON中的值过滤行

时间:2017-09-08 17:20:03

标签: jquery json datatables

我知道这个问题已被多次询问,但我已经尝试了每个解决方案,但它对我不起作用。

我有下一个脚本:

 var table = $('.dataTable').DataTable( {
    "dom": 'tip',
    "lengthMenu": [20],
    "ajax": 'myUrl',
    "sAjaxDataProp":"",
    "columns" : [
        {"data" : "data.employee_num"},
        {"data" : "data.name"},
        {"data" : "data.user"},
        {"data" :
            function(row){
                return row.data.food!== "1" ? "Yes" : "No";
            }
        }
    ]
});

JSON结构是这样的:

[
    {
        "data": {
            "employee_num": "X",
            "name": "XXXX",
            "user": "XXXX",
            "status ": "X",
        }
    },
    {
        "data": {
            "employee_num": "Y",
            "name": "YYYY",
            "user": "YYYY",
            "status ": "Y",
        }
    }
]

它工作正常,但我需要根据某个值过滤一些行。例如,在JSON中我有data.status,它可以是1或2.我需要的是,如果raw的状态为2,则必须删除所有行。我尝试使用filter()rows.remove();并且两者都没有用(或者至少我不知道我是否正确使用了它)

我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

好的,这是根据值(正确的方法)删除行的方法:

var table = $('.dataTable').DataTable( {
    "dom": 'tip',
    "lengthMenu": [20],
    "ajax": 'myUrl',
    "sAjaxDataProp":"",
    "columns" : [
        {"data" : "data.employee_num"},
        {"data" : "data.name"},
        {"data" : "data.user"},
        {"data" :
            function(row){
                return row.data.food!== "1" ? "Yes" : "No";
            }
        }
    ],
    // Answer 
    "createdRow": function( row, data ) {
        if (data["data"]["status"] === "2" ) {
            table.row(row).remove().draw();
        }
    }
});