dataTables带有选择标记的列过滤插件

我正在使用datatables v1.92以及列过滤插件v1.5.0。

问题

我需要创建用于单独列过滤的drodowns,其标记将是

Abc Def Ghi 

这是因为来自数据库的1, 2, or 3 。 显示给用户的标签是Abc, Def, or Ghi

使用列过滤插件,我可以使用创建列的下拉列表

 .columnFilter({ aoColumns: [ type : 'select', values:['1', '2', '3'] ] }); 

问题是该下拉列表的标记结果是

 1 2 3 

因此,用户显示为1, 2, 3作为下拉标签而不是Abc, Def, Ghi

我做了什么

我试图硬编码数据表的

部分中的下拉列表,但随后

 .columnFilter({ aoColumns: [ type : 'select', values:['1', '2', '3'] ] }); 

覆盖硬编码的下拉列表。 我甚至尝试将null作为aoColumns的参数aoColumns但这不起作用,因为它只是删除了硬编码的下拉列表。

那么有没有一种方法可以创建下拉列表,其中value属性将包含数值,而之间的标签将是文本?

我不确定你是否已经解决了这个问题,但是看看dataTables插件网站,我无法看到你做的事情。

但是对于解决方法,您可以手动创建菜单,然后使用fnFilter回调来更新具有特定值的列。

例如

  

 $('select').change(function(){ yourTable.fnFilter($(this).val(),colNum); // With colNum being the targeted column. }); 

然后,上面将按标签的值过滤表格,例如1 。 但是,如果您正在查看标签中包含的ABC过滤。

 $('select').change(function(){ yourTable.fnFilter($('select option:selected').text(),colNum); }); 

希望这有一些帮助。

如果您使用的是jquery.dataTables.columnFilter.js ,那么以下方法将适用于您:

而不是写:

 type : 'select', values:['1', '2', '3'] 

写这个:

 "type": "select", values: [{ label: "ABC", value: "1" }, { label: "DEF", value: "2" }]