ASP.NET Repeater 渲染的表格,每欄標題列有一個 CheckBox。勾選/取消勾選時,對應欄位 (含標題列、資料列) 顯示/隱藏。
編號
名稱
價格
001 商品A 100
002 商品B 200
function toggleCol(checkbox) {
var table = document.getElementById('tb');
var colIndex = checkbox.parentNode.cellIndex; // 取得欄位索引 (0-based)
var isVisible = checkbox.checked;
// 遍歷所有列 (包含 thead, tbody, tfoot)
for (var i = 0; i < table.rows.length; i++) {
var row = table.rows[i];
if (row.cells.length > colIndex) {
// 使用 visibility 而非 display,保持表格佈局不崩潰
row.cells[colIndex].style.visibility = isVisible ? 'visible' : 'hidden';
}
}
}
$('#tb th input:checkbox').on('change', function() {
var idx = $(this).closest('th').index();
var visible = this.checked;
$('#tb tr').each(function() {
$(this).find('td, th').eq(idx).css('visibility', visible ? 'visible' : 'hidden');
});
});
<%# Eval("ColumnName") %>
結論
Repeater 欄位顯隱控制:**標題 CheckBox `onclick` 傳 `this` → JS 取 `cellIndex` → 遍歷 `table.rows` 設定 `cells[index].style.visibility`**。使用 `visibility` 保持表格結構穩定,`cellIndex` 免去複雜選擇器,程式碼極簡健壯。
Copyright © 程式碼之家 All Rights Reserved