我们目前正在开发一个基于Web的CRM。这个项目进展顺利,但存在一个令人沮丧的问题。
我们在应用程序中几乎为每个可排序的表使用DataTable jQuery插件,以下是活动事件列表。
如您所见,第三列代表事件类型(工单、变更请求、服务请求等)。
用户要求在上一个表格顶部放置一个筛选框以过滤事件类型。例如,如果您选择“仅工单”,则会隐藏其他类型。到目前为止,一切都正常。
为了实现这一点,每行都有一个表示事件类型的CSS类。
- 第1行:class="ticket"
- 第2行:class="changeRequest"
当筛选框的值发生变化时,将执行以下JavaScript代码:
$('table.sortable').each(function() {
for (var i = 0; i < rows.length; i++) {
if ($(rows[i]).hasClass(vClass)) $(rows[i]).hide();
}
});
其中:
- vClass = 表示事件类型的CSS类
- rows = 所有的dataTable行,从"$(SomeDatatable).dataTable().fnGetNodes();"获取
- $('table.sortable') = 所有dataTables
现在,请系好你的安全带(法国邮轮)。当您隐式隐藏一行时,dataTable仍然会将其计算在内。这是一个绝妙的结果。
说完了这个,下面是主要问题:
我该如何告诉dataTable我想要隐藏行而不是永久删除它们?dataTable已经有一个筛选框,但我需要它独立工作,与类型筛选框(不在图片中)一起使用。
是否有办法添加第二个筛选器呢?