2016-11-16 57 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代碼。 –