索引列
高度互动的表格通常需要“计数器”列,包含表格中每行的位置。此列不应该可以排序,并且会随着最终用户更改应用于表格的排序和搜寻而动态改变。
本范例显示 DataTables 如何达成此目标,其中第一列是计数器列,并在进行排序或搜寻时更新。这是透过监听表格发出的 order 和 search 事件来完成的。侦测到这些事件时,cells().every() 方法会用于迭代表格第一列中的单元格,并使用 cell().data() 更新他们的内容(如有需要)。请注意,filter 和 order 选项用于 column() 方法,以取得当前顺序和当前应用的筛选器的节点。
| 姓名 | 职位 | 办公室 | 年龄 | 薪资 | |
|---|---|---|---|---|---|
| Tiger Nixon | 系统架构师 | 爱丁堡 | 61 | $320,800 | |
| Garrett Winters | 会计师 | 东京 | 63 | $170,750 | |
| Ashton Cox | 初阶技术作者 | 旧金山 | 66 | $86,000 | |
| Cedric Kelly | 资深 JavaScript 开发人员 | 爱丁堡 | 22 | $433,060 | |
| Airi Satou | 会计师 | 东京 | 33 | $162,700 | |
| Brielle Williamson | 整合专家 | 纽约 | 61 | $372,000 | |
| Herrod Chandler | 销售助理 | 旧金山 | 59 | $137,500 | |
| Rhona Davidson | 整合专家 | 东京 | 55 | $327,900 | |
| Colleen Hurst | Javascript 开发人员 | 旧金山 | 39 | $205,500 | |
| Sonya Frost | 软件工程师 | 爱丁堡 | 23 | $103,600 | |
| Jena Gaines | 办公室经理 | 伦敦 | 30 | $90,560 | |
| Quinn Flynn | 支援主管 | 爱丁堡 | 22 | $342,000 | |
| Charde Marshall | 区域总监 | 旧金山 | 36 | $470,600 | |
| Haley Kennedy | 资深营销设计师 | 伦敦 | 43 | $313,500 | |
| Tatyana Fitzpatrick | 区域总监 | 伦敦 | 19 | $385,750 | |
| Michael Silva | 营销设计师 | 伦敦 | 66 | $198,500 | |
| Paul Byrd | 财务长 (CFO) | 纽约 | 64 | $725,000 | |
| Gloria Little | 系统管理员 | 纽约 | 59 | $237,500 | |
| Bradley Greer | 软件工程师 | 伦敦 | 41 | $132,000 | |
| Dai Rios | 人事主管 | 爱丁堡 | 35 | $217,500 | |
| Jenette Caldwell | 开发主管 | 纽约 | 30 | $345,000 | |
| Yuri Berry | 首席营销官 (CMO) | 纽约 | 40 | $675,000 | |
| Caesar Vance | 售前支援 | 纽约 | 21 | $106,450 | |
| Doris Wilder | 销售助理 | 雪梨 | 23 | $85,600 | |
| Angelica Ramos | 首席执行官 (CEO) | 伦敦 | 47 | $1,200,000 | |
| Gavin Joyce | 开发者 | 爱丁堡 | 42 | $92,575 | |
| Jennifer Chang | 区域总监 | 新加坡 | 28 | $357,650 | |
| Brenden Wagner | 软件工程师 | 旧金山 | 28 | $206,850 | |
| Fiona Green | 首席营运官 (COO) | 旧金山 | 48 | $850,000 | |
| Shou Itou | 区域营销 | 东京 | 20 | $163,000 | |
| Michelle House | 整合专家 | 雪梨 | 37 | $95,400 | |
| Suki Burks | 开发者 | 伦敦 | 53 | $114,500 | |
| Prescott Bartlett | 技术作者 | 伦敦 | 27 | $145,000 | |
| Gavin Cortez | 团队领导 | 旧金山 | 22 | $235,500 | |
| Martena Mccray | 售后支援 | 爱丁堡 | 46 | $324,050 | |
| Unity Butler | 营销设计师 | 旧金山 | 47 | $85,675 | |
| Howard Hatfield | 办公室经理 | 旧金山 | 51 | $164,500 | |
| Hope Fuentes | 秘书 | 旧金山 | 41 | $109,850 | |
| Vivian Harrell | 财务主管 | 旧金山 | 62 | $452,500 | |
| Timothy Mooney | 办公室经理 | 伦敦 | 37 | $136,200 | |
| Jackson Bradshaw | 总监 | 纽约 | 65 | $645,750 | |
| Olivia Liang | 支援工程师 | 新加坡 | 64 | $234,500 | |
| Bruno Nash | 软件工程师 | 伦敦 | 38 | $163,500 | |
| Sakura Yamamoto | 支援工程师 | 东京 | 37 | $139,575 | |
| Thor Walton | 开发者 | 纽约 | 61 | $98,540 | |
| Finn Camacho | 支援工程师 | 旧金山 | 47 | $87,500 | |
| Serge Baldwin | 数据协调员 | 新加坡 | 64 | $138,575 | |
| Zenaida Frank | 软件工程师 | 纽约 | 63 | $125,250 | |
| Zorita Serrano | 软件工程师 | 旧金山 | 56 | $115,000 | |
| 詹妮弗·阿科斯塔 | 初级 Javascript 开发人员 | 爱丁堡 | 43 | $75,650 | |
| 卡拉·史蒂文斯 | 销售助理 | 纽约 | 46 | $145,600 | |
| 赫敏·巴特勒 | 区域总监 | 伦敦 | 47 | $356,250 | |
| 莱尔·格里尔 | 系统管理员 | 伦敦 | 21 | $103,500 | |
| 乔纳斯·亚历山大 | 开发者 | 旧金山 | 30 | $86,500 | |
| 沙德·德克尔 | 区域总监 | 爱丁堡 | 51 | $183,000 | |
| 迈克尔·布鲁斯 | Javascript 开发人员 | 新加坡 | 29 | $183,000 | |
| 唐娜·斯奈德 | 客服支持 | 纽约 | 27 | $112,000 | |
| 姓名 | 职位 | 办公室 | 年龄 | 薪资 |
- Javascript
- HTML
- CSS
- Ajax
- 服务器端脚本
- 注释
下面所示的 Javascript 用于初始化此示例中显示的表格
var table = $('#example').DataTable({ columnDefs: [ { searchable: false, orderable: false, targets: 0 } ], order: [[1, 'asc']] }); table .on('order.dt search.dt', function () { var i = 1; table .cells(null, 0, { search: 'applied', order: 'applied' }) .every(function (cell) { this.data(i++); }); }) .draw();
const table = new DataTable('#example', { columnDefs: [ { searchable: false, orderable: false, targets: 0 } ], order: [[1, 'asc']] }); table .on('order.dt search.dt', function () { let i = 1; table .cells(null, 0, { search: 'applied', order: 'applied' }) .every(function (cell) { this.data(i++); }); }) .draw();
除上述代码外,还加载以下 Javascript 库文件以在此示例中使用
下面显示的 HTML 是原始 HTML 表格元素,在 DataTables 对其进行优化之前
此示例使用了一点额外的 CSS,除了从库文件中加载的内容(如下所示)之外,还为了正确显示表格。下面显示了使用的附加 CSS
加载以下 CSS 库文件以在此示例中使用,为表格提供样式
此表格通过 Ajax 加载数据。下面显示了加载的最新数据。此数据将随着加载的任何其他数据自动更新。
下面显示用于对此表格执行服务器端处理的脚本。请注意,这只是一个使用 PHP 的示例脚本。服务器端处理脚本可以用任何语言编写,使用 DataTables 文档中描述的协议。