Hide/Delete 最后一列,如果标题是 None
Hide/Delete last column if heading is None
我有一个包含三列的数据表:
<div data-bind="attr:{'id':'TableA'+Id()}" class="panel-collapse collapse" style="height:auto; max-height:850px; overflow-x:hidden;">
<table data-bind="attr:{'id':'TableAt'+Id()}" class="table table-striped table-bordered">
<thead>
<tr>
<th>Vehicle</th>
<th data-bind="attr:{'id':'AC1'+Id()}"></th>
<th data-bind="attr:{'id':'AC2'+Id()}"></th>
@*<th data-bind="text:C1">Counter 1</th>
<th data-bind="text:C2">Counter 2</th>*@
</tr>
</thead>
<tbody data-bind="foreach: dataList">
<tr>
@*data-bind="style: { backgroundColor: Color }*@
<td>
<span data-bind="text: Name">4</span>
</td>
<td>
<span data-bind="text: C1">4</span>
</td>
<td>
<span data-bind="text: C2">2</span>
</td>
</tr>
</tbody>
</table>
</div>
最后两列的名称可以从 DropDown 更改,只有最后一列可以是 None。每次用户更改列的名称时,都必须单击一个按钮,以便 table 将根据新的更改进行刷新。
当最后一列的名称将变为 "None" 时,程序应该 hide/delete 最后一列。
我已经在重新加载数据的函数中尝试了这段代码
if (item.C2() == "None") {
//$('#TableAt' + item.Id()).DataTable().column(2).visible(false);
//$("#TableAt" + item.Id()).DataTable({ responsive: true });
//$('')
var tbl = document.getElementById("TableAt" + item.Id());
for (var i = 0; i < tbl.rows.length; i++) {
for (var j = 0; j < tbl.rows[i].cells.length; j++) {
tbl.rows[i].cells[j].style.display = "";
if (j == 2)
tbl.rows[i].cells[j].style.display = "none";
}
}
}
但是因为我的 table 的长度菜单最初设置为 10,所以当我想查看其他数据时它也会显示第三列。对于前 10 个数据行,它工作得很好。 hide/delete 其他数据行的最后一列是否与前 10 列一样?
首先。将 DataTable 实例存储在全局变量中,例如
myDataTable = $("#example").DataTable()
这样你就不需要 document.getElementById("TableAt" + item.Id())
。然后调用
myDataTable.column([name of column or index]).visible(false);
我认为应该这样做。
我有一个包含三列的数据表:
<div data-bind="attr:{'id':'TableA'+Id()}" class="panel-collapse collapse" style="height:auto; max-height:850px; overflow-x:hidden;">
<table data-bind="attr:{'id':'TableAt'+Id()}" class="table table-striped table-bordered">
<thead>
<tr>
<th>Vehicle</th>
<th data-bind="attr:{'id':'AC1'+Id()}"></th>
<th data-bind="attr:{'id':'AC2'+Id()}"></th>
@*<th data-bind="text:C1">Counter 1</th>
<th data-bind="text:C2">Counter 2</th>*@
</tr>
</thead>
<tbody data-bind="foreach: dataList">
<tr>
@*data-bind="style: { backgroundColor: Color }*@
<td>
<span data-bind="text: Name">4</span>
</td>
<td>
<span data-bind="text: C1">4</span>
</td>
<td>
<span data-bind="text: C2">2</span>
</td>
</tr>
</tbody>
</table>
</div>
最后两列的名称可以从 DropDown 更改,只有最后一列可以是 None。每次用户更改列的名称时,都必须单击一个按钮,以便 table 将根据新的更改进行刷新。 当最后一列的名称将变为 "None" 时,程序应该 hide/delete 最后一列。 我已经在重新加载数据的函数中尝试了这段代码
if (item.C2() == "None") {
//$('#TableAt' + item.Id()).DataTable().column(2).visible(false);
//$("#TableAt" + item.Id()).DataTable({ responsive: true });
//$('')
var tbl = document.getElementById("TableAt" + item.Id());
for (var i = 0; i < tbl.rows.length; i++) {
for (var j = 0; j < tbl.rows[i].cells.length; j++) {
tbl.rows[i].cells[j].style.display = "";
if (j == 2)
tbl.rows[i].cells[j].style.display = "none";
}
}
}
但是因为我的 table 的长度菜单最初设置为 10,所以当我想查看其他数据时它也会显示第三列。对于前 10 个数据行,它工作得很好。 hide/delete 其他数据行的最后一列是否与前 10 列一样?
首先。将 DataTable 实例存储在全局变量中,例如
myDataTable = $("#example").DataTable()
这样你就不需要 document.getElementById("TableAt" + item.Id())
。然后调用
myDataTable.column([name of column or index]).visible(false);
我认为应该这样做。