如何在特定表

时间:2017-08-24 22:02:05

标签: jquery datatables

(“数据表是指jQuery Data Tables产品。”

在这种情况下,我需要有选择地显示或隐藏特定页面上特定表(三个表中的一列)的列。当我运行此脚本时,我得到一个jQuery控制台错误Cannot read property 'bVisible' of undefined

现有论坛答案与.DataTable()的正确拼写有关。这不是问题所在。

根据现有的documentation,我正确地定义了oTable,但是文档假设我在页面上只有一个表(我有三个)。我应该做些什么来正确定义表格吗?

function setVisibleColumnsAverage() {
    $("#LoadingMessage").modal("show");
    var headers = ["Not Rated", "Target", "Ongoing", "Complete"];    
    var status = $("#InterventionStatus").val();

    //  Below is the relevant Data Table code

    var oTable = $(".display").DataTable();

    for (var j = 0; j < status.length; j++) {
        for (var i = 0; i < headers.length; i++) {
            if (status[j] === "Not Rated" && headers[i] === "Not Rated") {
                oTable.table("#InterventionAverage").column(4).visible(true, false);
                oTable.table("#InterventionAverage").column(9).visible(true, false);
            }
            if (status[j] === "Target" && headers[i] === "Target") {
                oTable.table("#InterventionAverage").column(5).visible(true, false);
                oTable.table("#InterventionAverage").column(10).visible(true, false);
            }
            if (status[j] === "Ongoing" && headers[i] === "Ongoing") {
                oTable.table("#InterventionAverage").column(6).visible(true, false);
                oTable.table("#InterventionAverage").column(11).visible(true, false);
            }
            if (status[j] === "Complete" && headers[i] === "Complete") {
                oTable.table("#InterventionAverage").column(7).visible(true, false);
                oTable.table("#InterventionAverage").column(12).visible(true, false);
            }
        }
    }

    oTable.columns.adjust().draw(false);
}

我尝试过其他具有相同结果的变体,例如:

var oTable = $(".display").DataTable();
var table1 = oTable.table("#InterventionAverage");

for (var j = 0; j < status.length; j++) {
    for (var i = 0; i < headers.length; i++) {
        if (status[j] === "Not Rated" && headers[i] === "Not Rated") {
            table1.column(4).visible(true, false);
            table1.column(9).visible(true, false);
        }
        if (status[j] === "Target" && headers[i] === "Target") {
            table1.column(5).visible(true, false);
            table1.column(10).visible(true, false);
        }
        if (status[j] === "Ongoing" && headers[i] === "Ongoing") {
            table1.column(6).visible(true, false);
            table1.column(11).visible(true, false);
        }
        if (status[j] === "Complete" && headers[i] === "Complete") {
            table1.column(7).visible(true, false);
            table1.column(12).visible(true, false);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

事实证明,错误消息Cannot read property 'bVisible' of undefined暗示其中一个列号超出范围。虽然我已经在渲染的html页面上计算了列数,但我没有考虑到列号从0开始而不是1.在此调整之后,没有列超出范围并且代码操作正确。