jQuery dataTables - 在表加载之前过滤行

时间:2014-12-12 14:56:38

标签: jquery jquery-datatables datatables-1.10

我正在使用带有以下内容的datatables jQuery插件加载数据表,它完美地运行:

$(document).ready(function() {
    $("#buying_datatable").DataTable({

        "ajax": {
            "url": "buying_interests.php",
            "type": "GET"
        },

        "paging": true,
        "sDom": '<"top">t<"bottom"><"clear">',
        "pageLength": 50,
        "order": [
            [1, "desc"]
        ],
        "aoColumns": [{
                "bSortable": true,
                "width": "40%",
                "sClass": "lang_body_2",
                "sTitle": "Category"
            }, {
                "bSortable": true,
                "width": "20%",
                "sClass": "lang_body_2",
                "sTitle": "Database"
            }, {
                "bSortable": true,
                "width": "20%",
                "sClass": "lang_body_2",
                "sTitle": "National Average"
            }, {
                "bSortable": true,
                "width": "20%",
                "sClass": "lang_body_2 index_num",
                "sTitle": "Index"
            },

        ],

    });
});

但是,我想要做的是过滤此表以仅显示列中具有特定值的行。例如,仅显示索引为0的列中带有字符串“Education”的行(代码为“Category”的sTitle)。有没有办法在这里添加一些东西,以便表格只加载显示满足该过滤条件的行?

1 个答案:

答案 0 :(得分:0)

您可以通过创建custom row filter

来实现这一目标
var filterStr = 'Education',
    filterIndex = 0;

$.fn.dataTableExt.afnFiltering.push(
    function( oSettings, aData, iDataIndex ) {
        return aData[filterIndex].indexOf(filterStr)>-1;
    }
);

这将仅显示第一列包含值“Education”的那些行。不区分大小写的版本:

$.fn.dataTableExt.afnFiltering.push(
    function( oSettings, aData, iDataIndex ) {
        return aData[filterIndex].toLowerCase().indexOf(filterStr.toLowerCase())>-1;
    }
);

演示 - &gt;的 http://jsfiddle.net/4q2d37r2/

上述解决方案在dataTables 1.10.x中也可以作为1.9.x使用。