重新排序事件
提供一个 UI,允许终端用户重新排序表格,但这只是其中一个方面 - 你可能希望终端用户造成的变更能够对数据库或某些其他数据存储产生影响。这可以通过侦听 row-reorder
事件来实现。
此示例演示如何侦听 row-reorder
事件,并在触发该事件后采取措施。在这种情况下,我们只需输出有关页面更改的数据,但更复杂的用例可能涉及使用 Ajax 通知服务器端有关该变更的信息。
使用 RowReorder 的 Editor 利用 Editor 的多行编辑功能的示例可在 Editor 网站上找到。
事件结果
序列 | 名称 | 职位 | 办公地点 | 开始日期 | 工资 |
---|---|---|---|---|---|
2 | Tiger Nixon | 系统架构师 | 爱丁堡 | 2011-04-25 | $320,800 |
22 | Garrett Winters | 会计师 | 东京 | 2011-07-25 | $170,750 |
6 | Ashton Cox | 初级技术作者 | 旧金山 | 2009-01-12 | $86,000 |
41 | Cedric Kelly | 高级 JavaScript 开发人员 | 爱丁堡 | 2012-03-29 | $433,060 |
55 | Airi Satou | 会计师 | 东京 | 2008-11-28 | $162,700 |
21 | Brielle Williamson | 集成专家 | 纽约 | 2012-12-02 | $372,000 |
46 | Herrod Chandler | 销售助理 | 旧金山 | 2012-08-06 | $137,500 |
50 | Rhona Davidson | 集成专家 | 东京 | 2010-10-14 | $327,900 |
26 | Colleen Hurst | JavaScript 开发人员 | 旧金山 | 2009-09-15 | $205,500 |
18 | Sonya Frost | 软件工程师 | 爱丁堡 | 2008-12-13 | $103,600 |
13 | Jena Gaines | 办公室经理 | 伦敦 | 2008-12-19 | $90,560 |
23 | Quinn Flynn | 支持主管 | 爱丁堡 | 2013-03-03 | $342,000 |
14 | Charde Marshall | 地区总监 | 旧金山 | 2008-10-16 | $470,600 |
12 | Haley Kennedy | 高级营销设计师 | 伦敦 | 2012-12-18 | $313,500 |
54 | Tatyana Fitzpatrick | 地区总监 | 伦敦 | 2010-03-17 | $385,750 |
37 | Michael Silva | 营销设计师 | 伦敦 | 2012-11-27 | $198,500 |
32 | Paul Byrd | 首席财务官 (CFO) | 纽约 | 2010-06-09 | $725,000 |
35 | Gloria Little | 系统管理员 | 纽约 | 2009-04-10 | $237,500 |
48 | Bradley Greer | 软件工程师 | 伦敦 | 2012-10-13 | $132,000 |
45 | Dai Rios | 人事主管 | 爱丁堡 | 2012-09-26 | $217,500 |
17 | Jenette Caldwell | 开发主管 | 纽约 | 2011-09-03 | $345,000 |
57 | Yuri Berry | 首席营销官 (CMO) | 纽约 | 2009-06-25 | $675,000 |
29 | Caesar Vance | 售前支持 | 纽约 | 2011-12-12 | $106,450 |
56 | Doris Wilder | 销售助理 | 悉尼 | 2010-09-20 | $85,600 |
36 | Angelica Ramos | 首席执行官 (CEO) | 伦敦 | 2009-10-09 | $1,200,000 |
5 | Gavin Joyce | 开发人员 | 爱丁堡 | 2010-12-22 | $92,575 |
51 | Jennifer Chang | 地区总监 | 新加坡 | 2010-11-14 | $357,650 |
20 | Brenden Wagner | 软件工程师 | 旧金山 | 2011-06-07 | $206,850 |
7 | Fiona Green | 首席运营官 (COO) | 旧金山 | 2010-03-11 | $850,000 |
1 | Shou Itou | 地区营销 | 东京 | 2011-08-14 | $163,000 |
39 | Michelle House | 集成专家 | 悉尼 | 2011-06-02 | $95,400 |
40 | Suki Burks | 开发人员 | 伦敦 | 2009-10-22 | $114,500 |
47 | Prescott Bartlett | 技术作者 | 伦敦 | 2011-05-07 | $145,000 |
52 | Gavin Cortez | 团队领导 | 旧金山 | 2008-10-26 | $235,500 |
8 | Martena Mccray | 售后支持 | 爱丁堡 | 2011-03-09 | $324,050 |
24 | Unity Butler | 营销设计师 | 旧金山 | 2009-12-09 | $85,675 |
38 | Howard Hatfield | 办公室经理 | 旧金山 | 2008-12-16 | $164,500 |
53 | Hope Fuentes | 秘书 | 旧金山 | 2010-02-12 | $109,850 |
30 | Vivian Harrell | 财务主管 | 旧金山 | 2009-02-14 | $452,500 |
28 | Timothy Mooney | 办公室经理 | 伦敦 | 2008-12-11 | $136,200 |
34 | Jackson Bradshaw | 主任 | 纽约 | 2008-09-26 | $645,750 |
4 | Olivia Liang | 支持工程师 | 新加坡 | 2011-02-03 | $234,500 |
3 | Bruno Nash | 软件工程师 | 伦敦 | 2011-05-03 | $163,500 |
31 | Sakura Yamamoto | 支持工程师 | 东京 | 2009-08-19 | $139,575 |
11 | Thor Walton | 开发人员 | 纽约 | 2013-08-11 | $98,540 |
10 | Finn Camacho | 支持工程师 | 旧金山 | 2009-07-07 | $87,500 |
44 | Serge Baldwin | 数据协调员 | 新加坡 | 2012-04-09 | $138,575 |
42 | Zenaida Frank | 软件工程师 | 纽约 | 2010-01-04 | $125,250 |
27 | Zorita Serrano | 软件工程师 | 旧金山 | 2012-06-01 | $115,000 |
49 | Jennifer Acosta | 初级 JavaScript 开发人员 | 爱丁堡 | 2013-02-01 | $75,650 |
15 | Cara Stevens | 销售助理 | 纽约 | 2011-12-06 | $145,600 |
9 | Hermione Butler | 地区总监 | 伦敦 | 2011-03-21 | $356,250 |
25 | Lael Greer | 系统管理员 | 伦敦 | 2009-02-27 | $103,500 |
33 | Jonas Alexander | 开发人员 | 旧金山 | 2010-07-14 | $86,500 |
43 | Shad Decker | 地区总监 | 爱丁堡 | 2008-11-13 | $183,000 |
16 | Michael Bruce | JavaScript 开发人员 | 新加坡 | 2011-06-27 | $183,000 |
19 | Donna Snider | 客户支持 | 纽约 | 2011-01-25 | $112,000 |
序列 | 名称 | 职位 | 办公地点 | 开始日期 | 工资 |
- JavaScript
- HTML
- CSS
- Ajax
- 服务器端脚本
- 评论
下面显示的 JavaScript 用于初始化本示例中所示的表格
var table = $('#example').DataTable({ rowReorder: true }); table.on('row-reorder', function (e, diff, edit) { var result = 'Reorder started on row: ' + edit.triggerRow.data()[1] + '<br>'; for (var i = 0, ien = diff.length; i < ien; i++) { var rowData = table.row(diff[i].node).data(); result += rowData[1] + ' updated to be in position ' + diff[i].newData + ' (was ' + diff[i].oldData + ')<br>'; } $('#result').html('Event result:<br>' + result); });
let table = new DataTable('#example', { rowReorder: true }); table.on('row-reorder', function (e, diff, edit) { let result = 'Reorder started on row: ' + edit.triggerRow.data()[1] + '<br>'; for (var i = 0, ien = diff.length; i < ien; i++) { let rowData = table.row(diff[i].node).data(); result += `${rowData[1]} updated to be in position ${diff[i].newData} ` + `(was ${diff[i].oldData})<br>`; } document.querySelector('#result').innerHTML = 'Event result:<br>' + result; });
除了上述代码外,还加载了以下 JavaScript 库文件以使用在本示例中
下面显示的 HTML 是原始 HTML 表元素,它尚未通过 DataTables 增强
本示例除了从库文件中加载的内容(如下所示)之外,还使用了一些额外的 CSS,以便正确显示表格。下面显示了使用的附加 CSS
在本文档中加载了以下 CSS 库文件以便设置表格的样式
此表格通过 Ajax 加载数据。已加载的最新数据显示在下面。当加载任何附加数据时,该数据将自动更新。
下面显示用于对此表执行服务器端处理的脚本。请注意,这只是一个使用 PHP 的示例脚本。服务器端处理脚本可以使用任何语言编写,使用 DataTables 文档中描述的协议。