2015-11-03 41 views
0

有没有办法将过滤器链接在一起,其中一列中应用的过滤器将预过滤其他列中的可用过滤器?首先我从多重选择的角度对此感兴趣,但对于我猜测的所有过滤器类型,它可能是通用的。将yadcf multi_select过滤器链接在一起

例如:

第1列的数据包含:

  1. 俄克拉荷马
  2. 密苏里
  3. 犹他州
  4. 德州
  5. 堪萨斯

第2列的数据包含:

  1. 奥巴马
  2. 罗姆尼

从我知道有“俄克拉荷马”的所有列1个数据将总是意味着列2将等于“罗姆尼”的数据集。因此,如果我从mutli_select中选择'Oklahoma',那么第2列的multi_select的下拉列表现在应该只显示'Romney'。

基本上,我是否可以根据已经放置的其他过滤器预过滤我的过滤器?

回答

0

我想你问yadcf的cumulative_filtering: true选项,

showcase page和这里的代码示例:

$(document).ready(function() { 
    'use strict'; 

    var oTable; 
    oTable = $('#example').DataTable(); 

    yadcf.init(oTable, 
     [ 
      { 
       column_number : 0, 
       filter_type: "multi_select", 
       select_type: 'select2' 
      }, 
      { 
       column_number: 3, 
       filter_type: "auto_complete", 
       text_data_delimiter: "," 
      }, 
      { 
       column_number : 4, 
       filter_type: "multi_select", 
       select_type: 'select2', 
       column_data_type: "html", 
       html_data_type: "text", 
       filter_default_label: "Select tag" 
      } 
     ], 
     { 
      cumulative_filtering: true 
     } 
    ); 
}); 

正如你所看到的cumulative_filtering: true是一个对象的属性,一个对象,那是init函数的第三个参数,当使用.yadcf([{...}]) api时,您应该将该对象作为第二个对.yadcf约束器的结构,如下所示:

.yadcf([{...}], {cumulative_filtering: true})

+0

谢谢。这对我来说并不适用。我将外部过滤器与Chosen插件结合使用,所以我不确定这是否会对我的问题有所帮助。在追踪发生了什么后,当你在3250行中调用AppendFilters时,它会回溯并完成它所需的一切,除非它实际上并未更新“选择”下拉列表。因此,在第3250行,我插入了一个调用destoryThirdPartyPlugins来清理'选择'下拉菜单,然后这工作。 –

+0

很好,你发现了一个bug,随时在github上详细介绍一个新问题。 – Daniel