首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Repeater 控制項列顯示/隱藏:JavaScript 實現 CheckBox 控制欄位可見性

     編輯:程式設計綜合問答

需求

ASP.NET Repeater 渲染的表格,每欄標題列有一個 CheckBox。勾選/取消勾選時,對應欄位 (含標題列、資料列) 顯示/隱藏。

HTML 結構假設


編號 名稱 價格
001商品A100
002商品B200

JavaScript 實現 (相容 IE9+、現代瀏覽器)


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';
        }
    }
}

關鍵技術點

  1. `cellIndex`**:`th`/`td` 固有屬性,直接給出欄位索引,**無需手動計算、無需依賴 ID/Class 命名**。
  2. `visibility: hidden` vs `display: none`**:
    • `visibility: hidden`:元素不可見但**保留佈局空間**,表格欄寬不變,其他欄不會位移,**體驗最佳**。
    • `display: none`:元素從佈局移除,表格欄寬重新計算,導致剩餘欄寬度變化、內容跳動。
  3. 標題列同步**:`thead` 同樣在 `table.rows` 中,迴圈自動處理標題列隱藏。
  4. 狀態持久化**:若需跨頁保持,將 `checkbox.checked` 狀態存入 `localStorage`/`Cookie`,頁面載入時初始化。

jQuery 版本 (若專案已引用)


$('#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');
    });
});

Repeater 服務端渲染 CheckBox 提示



    
        

結論

Repeater 欄位顯隱控制:**標題 CheckBox `onclick` 傳 `this` → JS 取 `cellIndex` → 遍歷 `table.rows` 設定 `cells[index].style.visibility`**。使用 `visibility` 保持表格結構穩定,`cellIndex` 免去複雜選擇器,程式碼極簡健壯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
<%# Eval("ColumnName") %>