如何设置特定表
问题描述:
数据表列的可见性(“数据表指的是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);
}
}
}
答
原来,该错误消息Cannot read property 'bVisible' of undefined
就是个暗示该列数字中的一个超出范围。尽管我已经在呈现的html页面上统计了列,但是我没有考虑到列号从0开始,而不是从1开始。在此调整之后,没有任何列超出范围并且代码正确运行。