我需要动态设置列的searchable属性(在表init之后)。有解决方案吗?用例是,我使用按钮扩展来切换列可见性。但我不会只搜索可见的列。
答案 0 :(得分:0)
我想添加"过滤按钮"到桌子。他们应该搜索(过滤)一个被排除在外的& amp;隐藏的&不可搜索的列。
在多个支持论坛中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()无效();
这非常昂贵,但您必须清除DataTable的内部缓存才能使解决方法正常工作(同样为了使过滤器按钮和全局搜索一起工作)。 我真的希望这个功能尽快融入核心!