如何将过滤器应用于特定数据表

问题描述 投票:18回答:7

是否可以将某个过滤器仅应用于一个数据表?我有以下准备应用到文档中的过滤器功能,我不知道这是否正确,但是作为副作用,所有dataTables都会受到过滤器的影响。我只想影响$('#productTable'),但此选择器似乎没有达到预期的效果。

//Filter Function in Stock 
//$('#productTable').
$.fn.dataTableExt.afnFiltering.push(function(oSettings, aData, iDataIndex) {
    var checked = $('#instock').is(':checked');
    var qntStock = 1; 
    var stockCol = 3; 

    if (!checked) {
        return true;
    }
    if (checked && aData[stockCol] > qntStock) {
        return true;
    }

    return false;
 });

是否可以仅将过滤器应用于特定表?我该如何完成?

编辑:

数据表初始化:

var oTable = $('#productTable').dataTable({
        "aoColumnDefs": [{
            "sClass": "my_class", 
            "aTargets": [4]
            }],
        "bAutoWidth": false,
        "iDisplayLength": 100,
        "fnDrawCallback": function() {
            $("td.my_class").editable(function(value, settings) 
            { 
                return(value);
            }, 
            {
                indicator : 'Save...',
                tooltip   : 'Click to Edit...'
            }
            );
        }
    });
javascript jquery jquery-plugins datatables
7个回答
24
投票

您可以创建一个包含过滤器的表数组-然后在过滤器中检查当前表是否存在于该数组中……:>

// setup an array of the ids of tables that should be allowed
var allowFilter = ['productTable'];

$.fn.dataTableExt.afnFiltering.push(function(oSettings, aData, iDataIndex) {

    // check if current table is part of the allow list
    if ( $.inArray( oSettings.nTable.getAttribute('id'), allowFilter ) == -1 )
    {
       // if not table should be ignored
       return true;
    }
    var checked = $('#instock').is(':checked');
    var qntStock = 1; 
    var stockCol = 3; 

    if (!checked) {
        return true;
    }
    if (checked && aData[stockCol] > qntStock) {
        return true;
    }

    return false;
});

7
投票

您可以执行以下操作:向配置添加参数:


3
投票

事实证明,过滤是全局的,实际上您必须过滤表元素...这非常令人失望。


3
投票

没有尝试过,但是这样的事情怎么样?


0
投票

这是我们的工作:


0
投票

以下链接将有助于将过滤器应用于数据表。http://live.datatables.net/oyinin/3/edit#javascript,html


-1
投票

您在这里干错了方法。$.fn.dataTable.ext.search.push还有另一个目的,当您要在页面中使用多个要过滤的数据表时,永远不要使用它。建立针对特定表的自定义搜索的最简单方法是为数据构建唯一ID的数组,然后在列ID中搜索它。例:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.