子行(显示更多/详细信息)
DataTables API 拥有许多将子行附加到 DataTable 中的父行的办法。这可用于显示有关某一行附加信息,这在您希望传达的信息量超出主表格中的显示空间时非常适用。
下例利用 row().child
方法首先检查是否已显示某一行,如果已显示则将其隐藏 (row().child.hide()
),否则显示 (row().child.show()
)。此示例中子行的内容由 format()
函数定义,但您可以将其替换为您想要显示的任何内容,例如包括 向服务器的 Ajax 调用 以获取任何额外信息。
姓名 | 职位 | 办公室 | 薪水 | |
---|---|---|---|---|
姓名 | 职位 | 办公室 | 薪水 |
- Javascript
- HTML
- CSS
- Ajax
- 服务器端脚本
- 备注
下面显示的 Javascript 用于初始化此示例中显示的表格
// 行详情的格式化函数 - 按需修改函数格式 (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(); } });
行详情的格式化函数 - 根据需要修改函数 format(d) { // `d` 是行的原始数据对象 return ( '<dl>' + '<dt>姓名全称:</dt>' + '<dd>' + d.name + '</dd>' + '<dt>扩展号:</dt>' + '<dd>' + d.extn + '</dd>' + '<dt>额外信息:</dt>' + '<dd>以及的其他详细信息(图像等)...</dd>' + '</dl>' ); } 让 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 如下所示
以下 CSS 库文件被加载到此示例中,以提供表格样式
此表格通过 Ajax 加载数据。已加载的最新数据显示在下方。随着任何其他数据加载,此数据将自动更新。
用于对该表格执行服务器端处理的脚本如下所示。请注意,这只是一个使用 PHP 的示例脚本。服务器端处理脚本可以使用任何语言编写,使用 数据表文档中描述的协议。