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)}
          },
    });