页脚回调
通过使用 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 文档中描述的协议。