jQuery dataTables:对应用了自定义筛选器的表进行排序会导致行消失

jQuery dataTables:对应用了自定义筛选器的表进行排序会导致行消失,jquery,datatables,Jquery,Datatables,我对以下数据表使用自定义筛选 var table = $('#placeholder').DataTable({ "bJQueryUI":true, "bFilter": true, "bPaginate": true, "bLengthChange": false, "pageLength": 25, "bDeferRender": true, "bSortClasses": false, "data": {$data} // nette injected })

我对以下数据表使用自定义筛选

var table = $('#placeholder').DataTable({
  "bJQueryUI":true,
  "bFilter": true,
  "bPaginate": true,
  "bLengthChange": false,
  "pageLength": 25,
  "bDeferRender": true,
  "bSortClasses": false,
  "data": {$data} // nette injected
});
为了仅显示与第2列值相关的唯一行

var rows = [];

$.fn.dataTable.ext.search.push(function (settings, data, dataIndex) {

  // Retrieve info for unique row filtering
  // If value is set, then unique filtering is enabled
  var filterUVal = parseInt($('#frm-filterForm-unique').val());
  var columnDVal = data[2];

  // Filter unique row
  if (!isNaN(filterUVal)) {
    if (~rows.indexOf(columnDVal)) {
      return false;
    } else {
      rows.push(columnDVal);
    }
  }
  return true;
});

如果我根据任何列进行排序,然后应用过滤器,那么它就工作了。但是,如果我首先应用自定义筛选器并根据任何列进行排序,那么所有行都会消失,并且我只看到空的数据表。

这是因为
永远不会重置。想想看,最终
将包含所有唯一的
数据[2]
值,因此无论搜索词是什么,每一行都返回一个false

我相信您可以通过在
绘图
处理程序中重置
来克服这一问题:

$('#placeholder').on('draw.dt', function() {
  rows = []
})