Иногда не хватает возможностей стандартных типов фильтров каталога List.
С Января 2024 стало возможным создавать кастом фильтры.
Как это сделать:
В list_search в SELECT 2 указываем настройки фильтра. Необходимо указать разметку фильтра в defValue, а текущее выбранное значение в commaSelected.
TypeCode должен быть равен custom.
Пример, в котором мы используем кастом фильтр в обычным полем input[type=text]:
select 4 id,
'Some title ' title,
'' tooltip,
's1' Code,
'<input type="text" value="'+isnull((select top 1 Value from @filters where [Key] = 's1'), '')+'" />' defValue,
'custom' typeCode,
'' as commaValues,
isnull((select top 1 Value from @filters where [Key] = 's1'), '') commaSelected
Поле Code мы будем в дальнейшем использовать в JS для получения значения фильтра.
В поле defValue может быть любая разметка + обязательно в ней необходимо надо учитывать текущее значение фильтра (из коллекции @filters). Если это какой-то JS плагин, то его можно иницализировать в globalJS в подобном стиле:
$(function(){
$('.cat-filter[data-code=s1] ....').somePlugin();
});
Прописываем в globalJS 2 JS коллбека:
Как это выглядит для нашего примера с фильтром s1:
$(function(){
as.listcallbacks= as.listcallbacks || {};
as.listcallbacks["s1_getFilter"] = function(filterCont){
var res= "";
res = $("input", filterCont).val();
return res;
}
as.listcallbacks["s1_resetFilter"] = function(filterCont){
$("input", filterCont).val('');
}
});
Примечание. Если нам необходимо выводить фильтры не в обычном порядке (через {filters} в разметке), то можем выводить их через {filter-s1}.