【发布时间】:2016-10-07 08:04:09
【问题描述】:
我需要动态设置列的searchable 属性(在表初始化之后)。有解决办法吗?用例是,我使用按钮扩展来切换列可见性。但我不希望只搜索可见列。
【问题讨论】:
标签: jquery datatables datatables-1.10
我需要动态设置列的searchable 属性(在表初始化之后)。有解决办法吗?用例是,我使用按钮扩展来切换列可见性。但我不希望只搜索可见列。
【问题讨论】:
标签: jquery datatables datatables-1.10
我想在表格中添加“过滤器按钮”。他们应该只在一个排除、隐藏和不可搜索的列中搜索(过滤)。
在多个支持论坛中,dt.作者承诺实现这个功能,但直到今天他还没有。但我确实找到了thread ,你可以自己做。
但你必须稍微改变一下。我的版本:
$.fn.dataTable.Api.register("isColumnSearchable()", function(colSelector) {
var idx = this.column(colSelector).index();
return this.settings()[0].aoColumns[idx].bSearchable;
});
$.fn.dataTable.Api.register("setColumnSearchable()", function(colSelector, value) {
if(value!==this.isColumnSearchable(colSelector)) {
var idx = this.column(colSelector).index();
this.settings()[0].aoColumns[idx].bSearchable = value;
if(value===true)
this.rows().invalidate();
}
return value;
});
我的 setFilterFunction:
function setFilter(table,col,value){
if(value== undefined || value=="" || value==0) {
value = "";
table.rows().invalidate();
}
else {
value = "\\b" + value + "\\b";
}
var oldsearchable = table.isColumnSearchable(col);
if (!oldsearchable)
table.setColumnSearchable(col, true);
table.column(col).search(value,true).draw();
if (!oldsearchable)
table.setColumnSearchable(col, false);
}
重要的部分是
this.rows().invalidate();
这是非常昂贵的,但是您必须清除 DataTable 的内部缓存才能使变通方法起作用(也使过滤器按钮和全局搜索一起工作)。 我真的希望这个功能能尽快集成到核心中!
【讨论】: