#jquery #datatables #datatables-1.10
#jquery #таблицы данных #таблицы данных -1.10
Вопрос:
Мне нужно динамически установить свойство столбца с возможностью поиска (после инициализации таблицы). Есть ли решение? Вариант использования заключается в том, что я использую расширение кнопки для переключения видимости столбцов. Но я не хочу, чтобы выполнялся поиск только по видимым столбцам.
Комментарии:
1. вы можете перейти по ссылке datatables.net/reference/option/columns.searchable
Ответ №1:
Я хотел добавить «кнопки фильтра» в таблицу. Они должны искать (фильтровать) только в одном исключенном, скрытом и недоступном для поиска столбце.
- исключено и скрыто, потому что пользователь не должен его видеть
- недоступно для поиска, потому что я хотел исключить его из глобального поиска.
На нескольких форумах поддержки dt. автор обещает реализовать эту функциональность, но до этого дня он этого не сделал. Но я нашел тему, как вы можете сделать это самостоятельно.
Но вам придется немного изменить это. Моя версия:
$.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();
это очень дорого, но вам придется очистить внутренний кэш таблицы данных, чтобы обходной путь сработал (также для того, чтобы кнопки фильтрации и глобальный поиск работали вместе). Я действительно надеюсь, что эта функциональность скоро будет интегрирована в ядро!