Javascript 筛选行分页-重置原始数据集-jQuery数据表
这是我在jQuery数据表中遇到的一个问题,我真的不知道为什么会发生这种情况 我有多个select元素,它们都过滤原始数据集。我对select change事件执行过滤逻辑 这是my Datatables init使用状态保存,来自文档: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
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。有关正确的选项名称,请参见。明白了!再次感谢!