页脚回调
通过使用 DataTables 提供的页眉和页脚回调操作功能(headerCallback 和 footerCallback),可以执行一些功能强大且有用的数据操作功能,例如汇总表格中的数据。
以下示例显示了一个页脚回调,它用于使用 column().data() API 方法对列(可见数据和隐藏数据)中的数据进行汇总,并使用 column().footer() 将值写入页脚。
| 名字 | 姓氏 | 职位 | 办公室 | 薪水 |
|---|---|---|---|---|
| Tiger | Nixon | 系统架构师 | 爱丁堡 | $320,800 |
| Garrett | Winters | 会计 | 东京 | $170,750 |
| Ashton | Cox | 初级技术作家 | 旧金山 | $86,000 |
| Cedric | Kelly | 高级 Javascript 开发人员 | 爱丁堡 | $433,060 |
| Airi | Satou | 会计 | 东京 | $162,700 |
| Brielle | Williamson | 集成专家 | 纽约 | $372,000 |
| Herrod | Chandler | 销售助理 | 旧金山 | $137,500 |
| Rhona | Davidson | 集成专家 | 东京 | $327,900 |
| Colleen | Hurst | Javascript 开发人员 | 旧金山 | $205,500 |
| Sonya | Frost | 软件工程师 | 爱丁堡 | $103,600 |
| Jena | Gaines | 办公室经理 | 伦敦 | $90,560 |
| Quinn | Flynn | 支持主管 | 爱丁堡 | $342,000 |
| Charde | Marshall | 区域总监 | 旧金山 | $470,600 |
| Haley | Kennedy | 高级营销设计师 | 伦敦 | $313,500 |
| Tatyana | Fitzpatrick | 区域总监 | 伦敦 | $385,750 |
| Michael | Silva | 营销设计师 | 伦敦 | $198,500 |
| Paul | Byrd | 首席财务官 (CFO) | 纽约 | $725,000 |
| Gloria | Little | 系统管理员 | 纽约 | $237,500 |
| Bradley | Greer | 软件工程师 | 伦敦 | $132,000 |
| Dai | Rios | 人事主管 | 爱丁堡 | $217,500 |
| Jenette | Caldwell | 开发主管 | 纽约 | $345,000 |
| Yuri | Berry | 首席营销官 (CMO) | 纽约 | $675,000 |
| Caesar | Vance | 售前支持 | 纽约 | $106,450 |
| Doris | Wilder | 销售助理 | Sydney | $85,600 |
| Angelica | Ramos | 首席执行官 (CEO) | 伦敦 | $1,200,000 |
| Gavin | Joyce | 开发人员 | 爱丁堡 | $92,575 |
| Jennifer | Chang | 区域总监 | 新加坡 | $357,650 |
| Brenden | Wagner | 软件工程师 | 旧金山 | $206,850 |
| Fiona | Green | 首席运营官 (COO) | 旧金山 | $850,000 |
| Shou | Itou | 区域营销 | 东京 | $163,000 |
| Michelle | House | 集成专家 | Sydney | $95,400 |
| Suki | Burks | 开发人员 | 伦敦 | $114,500 |
| Prescott | Bartlett | 技术作家 | 伦敦 | $145,000 |
| Gavin | Cortez | 团队主管 | 旧金山 | $235,500 |
| Martena | Mccray | 售后支持 | 爱丁堡 | $324,050 |
| Unity | Butler | 营销设计师 | 旧金山 | $85,675 |
| Howard | Hatfield | 办公室经理 | 旧金山 | $164,500 |
| Hope | Fuentes | 秘书 | 旧金山 | $109,850 |
| Vivian | Harrell | 财务总监 | 旧金山 | $452,500 |
| Timothy | Mooney | 办公室经理 | 伦敦 | $136,200 |
| Jackson | Bradshaw | 总监 | 纽约 | $645,750 |
| Olivia | Liang | 支持工程师 | 新加坡 | $234,500 |
| Bruno | Nash | 软件工程师 | 伦敦 | $163,500 |
| Sakura | Yamamoto | 支持工程师 | 东京 | $139,575 |
| Thor | Walton | 开发人员 | 纽约 | $98,540 |
| Finn | Camacho | 支持工程师 | 旧金山 | $87,500 |
| Serge | Baldwin | 数据协调员 | 新加坡 | $138,575 |
| Zenaida | Frank | 软件工程师 | 纽约 | $125,250 |
| Zorita | Serrano | 软件工程师 | 旧金山 | $115,000 |
| Jennifer | Acosta | 初级 Javascript 开发人员 | 爱丁堡 | $75,650 |
| Cara | Stevens | 销售助理 | 纽约 | $145,600 |
| Hermione | Butler | 区域总监 | 伦敦 | $356,250 |
| Lael | Greer | 系统管理员 | 伦敦 | $103,500 |
| Jonas | Alexander | 开发人员 | 旧金山 | $86,500 |
| Shad | Decker | 区域总监 | 爱丁堡 | $183,000 |
| Michael | Bruce | Javascript 开发人员 | 新加坡 | $183,000 |
| Donna | Snider | 客户支持 | 纽约 | $112,000 |
| 总计 | ||||
- Javascript
- HTML
- CSS
- Ajax
- 服务器端脚本
- 评论
下面显示的 Javascript 用于初始化此示例中显示的表格
$('#example').DataTable({ footerCallback: function (row, data, start, end, display) { var api = this.api(); // 移除格式以获取求和的整数数据 var intVal = function (i) { return typeof i === 'string' ? i.replace(/[\$,]/g, '') * 1 : typeof i === 'number' ? i : 0; }; // 所有页面的总计 total = api .column(4) .data() .reduce(function (a, b) { return intVal(a) + intVal(b); }, 0); // 本页的总计 pageTotal = api .column(4, { page: 'current' }) .data() .reduce(function (a, b) { return intVal(a) + intVal(b); }, 0); // 更新页脚 $(api.column(4).footer()).html( '$' + pageTotal + ' ( $' + total + ' total)' ); } });
new DataTable('#example', { footerCallback: function (row, data, start, end, display) { let api = this.api(); // 移除格式以获取求和的整数数据 let intVal = function (i) { return typeof i === 'string' ? i.replace(/[\$,]/g, '') * 1 : typeof i === 'number' ? i : 0; }; // 所有页面的总计 total = api .column(4) .data() .reduce((a, b) => intVal(a) + intVal(b), 0); // 本页的总计 pageTotal = api .column(4, { page: 'current' }) .data() .reduce((a, b) => intVal(a) + intVal(b), 0); // 更新页脚 api.column(4).footer().innerHTML = '$' + pageTotal + ' ( $' + total + ' total)'; } });
除了以上代码之外,以下 Javascript 库文件也被加载以供此示例使用
下面显示的 HTML 是原始的 HTML 表格元素,在被 DataTables 增强之前
此示例使用了一些超出库文件(如下)加载的 CSS,以便正确显示表格。下面显示了使用的附加 CSS
th { white-space: nowrap; }
以下 CSS 库文件被加载以供此示例使用,以提供表格的样式
此表格通过 Ajax 加载数据。下面显示了已加载的最新数据。此数据将在加载任何额外数据时自动更新。
下面显示了用于执行此表格的服务器端处理的脚本。请注意,这只是一个使用 PHP 的示例脚本。服务器端处理脚本可以用任何语言编写,使用 DataTables 文档中描述的协议。