YADCF multi_select过滤器下拉元素匹配为完全匹配或startsWith匹配

时间:2016-11-16 15:23:47

标签: jquery django yadcf

我在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

2 个答案:

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