datatable yadcf插件init()无法正常工作

时间:2015-04-09 09:00:11

标签: filter datatable yadcf

我正在使用带bootstrap3的数据表。我想在点击按钮后应用过滤器。但是当我点击按钮时,它会给我TypeError: oTable.settings is not a function错误。我的数据表版本为1.10.6,yadcf版本为0.8.7 这是我的代码

function init_datatable(table_id, records) {
//    console.log('init table',$.parseJSON(records));
    var oTable = $(table_id).dataTable({
        aaData: $.parseJSON(records),
        "sPaginationType": "bootstrap",
        "bFilter": false,
        "bInfo": false,
        "sPageButtonActive": "active",
        "aaSorting": [[0, 'desc']],
        "bDeferRender": true,
        "sDom": '<"top"if>rt<"bottom"lp><"clear">',
        "aLengthMenu": [
            [10, 20, 30, 50, -1],
            [10, 20, 30, 50, "All"] // change per page values here
        ],
        "iDisplayLength": 10,
        "oLanguage": {
            "sEmptyTable": "No data available"
        },
        "aoColumnDefs": [{
                "aTargets": [0],
                "bVisible": false,
                "bSearchable": false
            },
            {
                "bSortable": false,
                "aTargets": [-1], // <-- gets last column and turns off sorting
                "mData": null,
                "mRender": function(data, type, full) {
                    return '<a data-original-title="Edit" id="edit_' + full[0] + '" data-placement="top" class="btn btn-xs btn-teal tooltips edit"  href="javascript:void(0)"><i class="fa fa-edit"></i> Edit</a>';
                }
            }]
    });
//            .yadcf([
//        {column_number: 1}
//    ]);
    $(table_id + '_wrapper .dataTables_length select').addClass("m-wrap");
    $(table_id + '_wrapper .dataTables_length select').select2();
    return oTable;
}

这里是应用列过滤器的代码

var pTable = init_datatable('#tbl_sample', data);
     function apply_column_filter() {
            yadcf.init(pTable, [
                {column_number: 1}
            ]);
    }

注释“init_datatble函数中的代码正在运行。但是当我使用init时它会给我错误

2 个答案:

答案 0 :(得分:3)

yadcf.init应仅用于具有大写D的新API,并且由于您未使用新API,因此应使用以下方式初始化yadcf

$(table_id).dataTable({
    ......
}).yadcf([......]);

请参阅the showcase

上的代码段中的评论
//----------------------------------------------
//Example on how to define a custom filter function
//this function is goinf to be passesd to yadcf as custom_func parameter value
//and going to be tested against each value in the column
//----------------------------------------------

b.t.w如果你想以实际方式过滤某些列,你应该使用

exFilterColumn函数,see docs

答案 1 :(得分:0)

您仍然可以通过获取表引用来使用“yadcf.init”。这就是如何获得表的引用:

var api = new jQuery.fn.dataTable.Api(settings); var oTable = api.table();

yadcf.init(oTable,[{}]);