子資料列(顯示額外/詳細資訊)

DataTables API 有許多方法可以將子資料列附加到 DataTable 中的資料列。這可以用於顯示關於資料列的額外資訊,這在您希望傳達關於資料列的更多資訊,而主表格中沒有足夠空間的情況下非常有用。

下面的範例使用了 row().child 方法,首先檢查資料列是否已經顯示,如果是,則隱藏它 (row().child.hide()),否則顯示它 (row().child.show())。此範例中子資料列的內容由 format() 函式定義,但您可以將其替換為您想顯示的任何內容,可能包括例如一個向伺服器發出的 Ajax 呼叫,以獲取任何額外資訊。

姓名 職位 辦公室 薪資
姓名 職位 辦公室 薪資
  • Javascript
  • HTML
  • CSS
  • Ajax
  • 伺服器端腳本
  • 評論

以下顯示的 Javascript 用於初始化此範例中顯示的表格

// 資料列詳細資訊的格式化函式 - 根據需要修改 function format(d) { // `d` 是資料列的原始資料物件 return ( '<dl>' + '<dt>全名:</dt>' + '<dd>' + d.name + '</dd>' + '<dt>分機號碼:</dt>' + '<dd>' + d.extn + '</dd>' + '<dt>額外資訊:</dt>' + '<dd>還有任何進一步的詳細資訊(圖片等)...</dd>' + '</dl>' ); } var table = $('#example').DataTable({ ajax: '../ajax/data/objects.txt', columns: [ { className: 'dt-control', orderable: false, data: null, defaultContent: '' }, { data: 'name' }, { data: 'position' }, { data: 'office' }, { data: 'salary' } ], order: [[1, 'asc']] }); // 為開啟和關閉詳細資訊新增事件監聽器 $('#example tbody').on('click', 'td.dt-control', function () { var tr = $(this).closest('tr'); var row = table.row(tr); if (row.child.isShown()) { // 這個資料列已經打開 - 關閉它 row.child.hide(); } else { // 開啟這個資料列 row.child(format(row.data())).show(); } });
// 資料列詳細資訊的格式化函式 - 根據需要修改 function format(d) { // `d` 是資料列的原始資料物件 return ( '<dl>' + '<dt>全名:</dt>' + '<dd>' + d.name + '</dd>' + '<dt>分機號碼:</dt>' + '<dd>' + d.extn + '</dd>' + '<dt>額外資訊:</dt>' + '<dd>還有任何進一步的詳細資訊(圖片等)...</dd>' + '</dl>' ); } let table = new DataTable('#example', { ajax: '../ajax/data/objects.txt', columns: [ { className: 'dt-control', orderable: false, data: null, defaultContent: '' }, { data: 'name' }, { data: 'position' }, { data: 'office' }, { data: 'salary' } ], order: [[1, 'asc']] }); // 為開啟和關閉詳細資訊新增事件監聽器 table.on('click', 'td.dt-control', function (e) { let tr = e.target.closest('tr'); let row = table.row(tr); if (row.child.isShown()) { // 這個資料列已經打開 - 關閉它 row.child.hide(); } else { // 開啟這個資料列 row.child(format(row.data())).show(); } });

除了上面的程式碼之外,還載入了以下 Javascript 函式庫檔案以供此範例使用

    以下顯示的 HTML 是原始的 HTML 表格元素,在它被 DataTables 增強之前

    此範例使用了一些超出從函式庫檔案載入的額外 CSS(如下所示),以便正確顯示表格。使用的額外 CSS 如下所示

    以下 CSS 函式庫檔案已載入供此範例使用,以提供表格的樣式

      此表格透過 Ajax 載入資料。以下顯示已載入的最新資料。當載入任何其他資料時,此資料將自動更新。

      以下顯示用於執行此表格伺服器端處理的腳本。請注意,這只是一個使用 PHP 的範例腳本。伺服器端處理腳本可以使用任何語言編寫,使用DataTables 文件中描述的協定

      其他範例