复杂表格表头 – 选择的表头行
与此 配套示例 一样,此示例显示了 Buttons 的多行表头和页脚处理,但此示例中显示的是如何将导出限制到特定的行,而不是将表头 / 页脚中的所有行都包括在导出中。如果你有一个表头行用于搜索输入元素,这些元素在导出的数据中无关紧要,那么这很有用,如这里所示。
为了在表头输出中只有一行,我们对每个按钮 exportOptions 的 customizeData
回调函数(请参阅 buttons.exportData()
,了解导出选项的完整选项列表)进行操作,以操作要导出的数据,即此示例中从表头中删除一个行。这个函数在此页面上使用的所有按钮之间共享,以帮助提高代码的可读性并减小尺寸。
姓名 | 职位 | 办公室 | 分机号 | 开始日期 | 薪资 |
---|---|---|---|---|---|
姓名 | 职位 | 办公室 | 分机号 | 开始日期 | 薪资 |
- Javascript
- HTML
- CSS
- Ajax
- 服务器端脚本
- 注释
下面显示的 Javascript 用于初始化此示例中显示的表
var exportOptions = { customizeData: function (data) { // 移除第二行表头,方法是将其从数组中弹出 data.headerStructure.pop(); console.log(data); } }; $('#example').DataTable({ ajax: '../../../../examples/ajax/data/objects.txt', columns: [ { data: 'name' }, { data: 'position' }, { data: 'office' }, { data: 'extn' }, { data: 'start_date' }, { data: 'salary' } ], layout: { topStart: { buttons: [ { extend: 'copyHtml5', exportOptions: exportOptions }, { extend: 'excelHtml5', exportOptions: exportOptions }, { extend: 'pdfHtml5', exportOptions: exportOptions } ] } }, initComplete: function () { this.api() .columns() .every(function () { // 从第二行表头获取输入元素 var input = $('input', this.header(1)); var column = this; // 用户输入的事件侦听器 input.on('keyup', function () { if (column.search() !== input.val()) { column.search(input.val()).draw(); } }); }); } });
let exportOptions = { customizeData: function (data) { // 将 Array 中的第二行表头移除 data.headerStructure.pop(); console.log(data); } }; new DataTable('#example', { ajax: '../../../../examples/ajax/data/objects.txt', columns: [ { data: 'name' }, { data: 'position' }, { data: 'office' }, { data: 'extn' }, { data: 'start_date' }, { data: 'salary' } ], layout: { topStart: { buttons: [ { extend: 'copyHtml5', exportOptions: exportOptions }, { extend: 'excelHtml5', exportOptions: exportOptions }, { extend: 'pdfHtml5', exportOptions: exportOptions } ] } }, initComplete: function () { this.api() .columns() .every(function () { // 从第二行表头获取输入元素 let input = this.header(1).querySelector('input'); let column = this; // 用户输入事件监听器 input.addEventListener('keyup', () => { if (column.search() !== input.value) { column.search(input.value).draw(); } }); }); } });
除了上述代码外,此示例中还加载了以下 Javascript 库文件以便使用
下面显示的 HTML 是原始的 HTML 表格元素,在通过 DataTables 进行增强之前
此示例使用了额外的 CSS,超出库文件加载的内容(如下),以便正确显示表格。使用的额外 CSS 如下所示
thead input { width: 100%; padding: 3px; box-sizing: border-box; }
此示例加载了以下 CSS 库文件,以便对表格应用样式
此表格通过 Ajax 加载数据。已加载的最新数据如下所示。此数据将随着加载的所有其他数据自动更新。
用于为表格执行服务器端处理的脚本如下所示。请注意,这只是一个使用 PHP 的示例脚本。服务器端处理脚本可以采用任何语言编写,使用 DataTables 文档中描述的协议。