DataTable根据显示的数据

时间:2018-04-13 14:15:20

标签: javascript filter datatables

据我所知,DataTable的过滤器部分是一个插件,其简要说明如下:https://code.google.com/archive/p/jquery-datatables-column-filter/wikis/ColumnFilter.wiki

我想要完成的是当用户过滤数据时,我希望过滤器下拉选项根据当前数据集中的可用内容进行更改。例如,如果我过滤"食物类型"要成为肉类",我不想在" Food"中看到蔬菜或水果。过滤器,只有不同种类的肉。如果我选择"蔬菜"在"食物类型"过滤器,然后我只会在" Food"中看到蔬菜,例如" Potatoes"过滤

具体要求:

  • 过滤器部分必须与表格分开
  • 初次装载时 - 显示没有"食物"选择"食物"过滤器
  • 一次"食物类型"选择变化 - 更新"食物"过滤选项适用于"食物类型"。可能使用"搜索:applied"。如果"食物类型"设置为默认值"所有食物"类型,显示没有"食物" in" food"过滤。当食物"食物"时,确保重新绘制表格。被选中进行过滤。
  • 不要更新"食物"过滤清单当"食物"被选中,除非改变所选择的"食物" (如果那还没有自动完成)

目前,过滤器似乎只在页面初始化时设置。 columnFilter选项允许为过滤器设置特定值,但我相信这只在页面加载时出现一次。以这种方式重新绘制过滤器的问题可能会保存用户对过滤器的选择。

我能想到的另一种方法是在更改过滤器选择时,在单独的JavaScript函数中更新过滤器选项列表。这将涉及使用此功能从过滤的数据集中解析数据:

table.on('search.dt', function() {
    //number of filtered rows
    console.log(table.rows( { filter : 'applied'} ).nodes().length);
    //filtered rows data as arrays
    console.log(table.rows( { filter : 'applied'} ).data());                                  
})

http://jsfiddle.net/h4wrmfx3/

我想知道是否有更好的方法来实现这一点,也许是使用内置的DataTables功能。

0 个答案:

没有答案