YADCF multi_select 过滤下拉元素匹配为完全匹配或 startsWith 匹配
YADCF multi_select filter dropdown element matching as exact match or startsWith match
我在 django 中使用 yadcf 进行服务器端处理:
我尝试使用的过滤器的初始化是这样的:
{ column_number : 4, filter_type: "multi_select", select_type:"select2", sort_as:"none", filter_match_mode:"exact" },
基本上我希望用户输入的搜索值与下拉列表中的元素匹配为 "startsWith" 或 "exact" 匹配,但目前它们被匹配为 "contains".
这只与下拉列表中的匹配和顶部输入框中输入的值有关,与table的实际过滤无关。
我正在寻找的行为类型可以在这里找到:https://select2.github.io/examples.html#matcher
可以使用 select_type_options 从 yadcf 传递 Select2 选项,如下所示:
{
column_number: 2,
select_type: 'select2',
select_type_options: {
width: '150px',
minimumResultsForSearch: -1 // remove search box
}
}
如果需要,您也可以传递一个函数,只需声明一个变量并用一个函数设置它,我建议您在移动代码之后在仅包含 slect2 框(没有数据表/yadcf)的测试页面上尝试到 yadcf 列初始化
既然你在使用serverSide
你必须知道你的整个过滤逻辑应该在你的服务器端实现。
这是我解决这个问题的方法,不确定这是否是正确的方法,但它适用于我的应用程序 -
$.fn.select2.amd.require(['select2/compat/matcher'],
function (oldMatcher) {
function matchStart (term, text) {
if (text.toUpperCase().startsWith(term.toUpperCase())) {
return true;
}
return false;
}
yadcf.init(dt_table, [
{
column_number : 0,
filter_type:"multi_select",
select_type:"select2",
select_type_options:{
matcher:oldMatcher(matchStart)}
},
});
我在 django 中使用 yadcf 进行服务器端处理:
我尝试使用的过滤器的初始化是这样的:
{ column_number : 4, filter_type: "multi_select", select_type:"select2", sort_as:"none", filter_match_mode:"exact" },
基本上我希望用户输入的搜索值与下拉列表中的元素匹配为 "startsWith" 或 "exact" 匹配,但目前它们被匹配为 "contains".
这只与下拉列表中的匹配和顶部输入框中输入的值有关,与table的实际过滤无关。
我正在寻找的行为类型可以在这里找到:https://select2.github.io/examples.html#matcher
可以使用 select_type_options 从 yadcf 传递 Select2 选项,如下所示:
{
column_number: 2,
select_type: 'select2',
select_type_options: {
width: '150px',
minimumResultsForSearch: -1 // remove search box
}
}
如果需要,您也可以传递一个函数,只需声明一个变量并用一个函数设置它,我建议您在移动代码之后在仅包含 slect2 框(没有数据表/yadcf)的测试页面上尝试到 yadcf 列初始化
既然你在使用serverSide
你必须知道你的整个过滤逻辑应该在你的服务器端实现。
这是我解决这个问题的方法,不确定这是否是正确的方法,但它适用于我的应用程序 -
$.fn.select2.amd.require(['select2/compat/matcher'],
function (oldMatcher) {
function matchStart (term, text) {
if (text.toUpperCase().startsWith(term.toUpperCase())) {
return true;
}
return false;
}
yadcf.init(dt_table, [
{
column_number : 0,
filter_type:"multi_select",
select_type:"select2",
select_type_options:{
matcher:oldMatcher(matchStart)}
},
});