我正在使用带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时它会给我错误
答案 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,[{}]);