我在django中使用yadcf和服务器端处理:
我尝试使用的过滤器的初始化是这样的:
{ column_number : 4, filter_type: "multi_select", select_type:"select2", sort_as:"none", filter_match_mode:"exact" },
基本上我希望用户输入的搜索值与下拉列表中的元素匹配为“startsWith”或“exact”匹配,但目前它们匹配为“contains”。
这与下拉列表中的匹配和顶部输入框中输入的值有关,而不是与表的实际过滤有关。
可以在这里找到我正在寻找的行为:https://select2.github.io/examples.html#matcher
答案 0 :(得分:0)
可以使用select_type_options从yadcf传递Select2选项,如下所示:
{
column_number: 2,
select_type: 'select2',
select_type_options: {
width: '150px',
minimumResultsForSearch: -1 // remove search box
}
}
如果需要,您也可以传递一个函数,只需声明一个变量并使用函数设置它,我建议您在包含slect2框的测试页面上尝试它(没有datatables / yadcf)之后将代码移动到yadcf列init
由于您使用的是serverSide
,因此必须知道您的整个过滤逻辑应该在服务器端实现。
答案 1 :(得分:0)
这是我解决这个问题的方法,不确定这是否是正确的方法,但它适用于我的应用程序 -
$.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)}
},
});