具有百分比列的DataTables和ColumnFilter

时间:2014-01-27 11:01:01

标签: javascript jquery sorting datatables jquery-datatables

我使用以下代码将%列添加到我的数据表:

jQuery.extend(jQuery.fn.dataTableExt.oSort, {
    "percent-pre": function (a) {
        var x = (a == "-") ? 0 : a.replace(/%/, "");
        return parseFloat(x);
    },

    "percent-asc": function (a, b) {
        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
    },

    "percent-desc": function (a, b) {
        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
    }
});

这样我可以对包含'%'的列进行排序。

我还在我的表中添加了ColumnFilter插件(Plugin Link),以便能够过滤各个列。

当我将百分比值保存并显示为数字时,我可以过滤该列: Fiddle Demo

但是当我将该列类型设置为百分比并尝试过滤同一列时,我总是得到空数据: Fiddle Demo

打开第一个小提琴并单击“加载数据”并尝试设置'%'列的范围 - 一切正常。现在对第二个做同样的事情 - 你会得到空表。

如何将范围过滤器应用于具有百分比值的列?

1 个答案:

答案 0 :(得分:2)

事实证明这很容易。
将百分比值存储为数字并按如下方式声明列:

{
    sTitle: "%",
    sType: "numeric",
    sWidth: "40px",
    sClass: "center",
    mData: "percent",
    mRender: function (data, type, full) {
        if (type === 'display') {//this is available in DataTables 1.9+
            return data + ' %';
        }
        return data;
    }
}

这是我更新并正在使用jsFiddle