2016-11-16 61 views
0

我在Django使用yadcf与服务器端的处理:YADCF MULTI_SELECT筛选下拉元件匹配的精确匹配或startsWith比赛

过滤器我想一起工作的初始化是这样的:

{ column_number : 4, filter_type: "multi_select", select_type:"select2", sort_as:"none", filter_match_mode:"exact" }, 

基本上我希望用户输入的搜索值与下拉列表中的元素匹配为“startsWith”或“精确”匹配,但目前它们被匹配为“contains”。

这与下拉列表中的匹配和上方输入框中输入的值相关,而不是表格的实际过滤。

与这种行为我正在寻找的可以在这里找到:https://select2.github.io/examples.html#matcher

回答

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

选择二选项可以从yadcf传递通过select_type_options,像这样:

{ 
    column_number: 2, 
    select_type: 'select2', 
    select_type_options: { 
     width: '150px', 
     minimumResultsForSearch: -1 // remove search box 
    } 
} 

如果需要,可以传递一个函数也只是声明一个变量并设置一个函数,我建议你在仅包含一个slect2盒子的测试页上尝试它(没有datatables/yadcf),然后将代码移动到yadcf列init

由于您使用的是serverSide,您必须知道您的整个过滤逻辑应该在您的服务器端实施。

+0

嘿,感谢您的帮助!我尝试将函数赋值给一个变量,并在匹配器上调用它,但似乎没有工作,所以我做了一个工作,并在导入旧的select2适配器的函数内定义了我的yadcf.init代码。 –