据我所知,DataTable的过滤器部分是一个插件,其简要说明如下:https://code.google.com/archive/p/jquery-datatables-column-filter/wikis/ColumnFilter.wiki
我想要完成的是当用户过滤数据时,我希望过滤器下拉选项根据当前数据集中的可用内容进行更改 . 例如,如果我将“食物类型”过滤为“肉类”,我不希望在“食物”过滤器中看到蔬菜或水果,只有不同种类的肉 . 如果我在“食物类型”过滤器中选择“蔬菜”,那么我只会在“食物”过滤器中看到蔬菜,例如“土 beans ” .
具体要求:
-
过滤器部分必须与表分开
-
初始加载 - 在"food"过滤器中显示没有"food"选项
-
一旦"Food type"选择更改 - 使用适用于该"food type"的选项更新"food"过滤器 . 可能使用"search:applied" . 如果"food type"设置为默认"all food"类型,则在"food"过滤器中显示"food" . 确保在选择"food"进行过滤时重绘表格 .
选择"food"时 -
不更新"food"过滤器列表,除非更改选定的"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());
})
我想知道是否有更好的方法来实现这一点,也许是使用内置的DataTables功能 .