Javascript 筛选行分页-重置原始数据集-jQuery数据表

Javascript 筛选行分页-重置原始数据集-jQuery数据表,javascript,jquery,pagination,datatables,Javascript,Jquery,Pagination,Datatables,这是我在jQuery数据表中遇到的一个问题,我真的不知道为什么会发生这种情况 我有多个select元素,它们都过滤原始数据集。我对select change事件执行过滤逻辑 这是my Datatables init使用状态保存,来自文档: var table = $('#orders-listing').DataTable({ bStateSave: true, bFilter:true, paging: true, bPaginate:true, langu

这是我在jQuery数据表中遇到的一个问题,我真的不知道为什么会发生这种情况

我有多个select元素,它们都过滤原始数据集。我对select change事件执行过滤逻辑

这是my Datatables init使用状态保存,来自文档:

var table = $('#orders-listing').DataTable({
   bStateSave: true, 
   bFilter:true, 
   paging: true, 
   bPaginate:true,
   language: { url: /* Language File URL */ },
   fnStateSave: function(oSettings, oData){
     localStorage.setItem('DataTables_'+window.location.pathname, JSON.stringify(oData));
   },
   fnStateLoad: function(oSettings){
     return JSON.parse(localStorage.getItem('DataTables_'+window.location.pathname));
   }
});
这是我在选择更改事件上的过滤逻辑:

$('.filter-select').on('change', function() {

  $.fn.dataTable.ext.afnFiltering.push(
     function(settings, data, dataIndex) {
          // Some logic, return a boolean, wether we keep the row being processed or not.
     }
  );

  table.draw(); 
  $.fn.dataTable.ext.afnFiltering.pop();
});
现在,过滤工作正常。行、分页链接、所有内容都会相应更改。 但是,一旦我单击分页链接上的第二个链接,原始数据集就会返回

示例:首先,我有200行,过滤后,它被减少到150行,因此过滤了50行,并从原始数据集中删除,然后,一旦我单击分页上的第二个链接,原始数据集将返回前200行

我错过了什么?分页时是什么导致原始数据集返回

非常感谢您的帮助。谢谢。

在使用draw绘制表格后,您将立即执行$.fn.dataTable.ext.afnFiltering.pop。draw将删除您的自定义过滤器,如果表格已排序、页面已更改等,则不再应用该过滤器

尝试在$.fn.dataTable.ext.afnFiltering.push之前添加$.fn.dataTable.ext.afnFiltering.pop,以便仅在更改过滤器时删除以前的自定义过滤器,但在添加新过滤器之前删除。

在使用draw绘制表格后立即执行$.fn.dataTable.ext.afnFiltering.pop,该表格将删除自定义过滤器,并且不再应用若表格已排序,页面将更改,等等


尝试在$.fn.dataTable.ext.afnFiltering.push之前添加$.fn.dataTable.ext.afnFiltering.pop,仅在更改过滤器时删除以前的自定义过滤器,但在添加新过滤器之前删除。

您正在执行$.fn.dataTable.ext.afnFiltering.pop;使用draw绘制表格后,立即删除自定义过滤器,如果表格已排序、页面已更改等,则不再应用该过滤器。请尝试添加$.fn.dataTable.ext.afnFiltering.pop;在$.fn.dataTable.ext.afnFiltering.push之前,仅在更改过滤器时才删除以前的自定义过滤器。我真的没有想到这一点!谢谢你,伙计!现在很好用!此外,我不建议将选项与新旧命名约定混合使用,分页和bPaginate是一回事,为了代码清晰起见,请删除bPaginate。有关正确的选项名称,请参见。明白了!再次感谢!您正在执行$.fn.dataTable.ext.afnFiltering.pop;使用draw绘制表格后,立即删除自定义过滤器,如果表格已排序、页面已更改等,则不再应用该过滤器。请尝试添加$.fn.dataTable.ext.afnFiltering.pop;在$.fn.dataTable.ext.afnFiltering.push之前,仅在更改过滤器时才删除以前的自定义过滤器。我真的没有想到这一点!谢谢你,伙计!现在很好用!此外,我不建议将选项与新旧命名约定混合使用,分页和bPaginate是一回事,为了代码清晰起见,请删除bPaginate。有关正确的选项名称,请参见。明白了!再次感谢!