服务器端处理
Select 2.1 介绍了对服务器端处理的支持 - 这里有特别需要考虑的地方,因为行选择是客户端的,但并不是所有行都可以在客户端看到(仅绘制当前显示的行)。这会对 API 产生影响,因为 .rows({selected: true})
将只能获取当前显示行的信息。
为解决这个问题,Select 引入了 select.cumulative()
方法,可用于获取所有已选择的行的 ID,而不管分页或过滤如何。请注意,数据源必须为每行赋予一个唯一 ID,你可能必须设置 rowId
选项,以告知 DataTables 它应该叫什么(它默认查找 DT_RowId
)。
此外,当与复选框选择一起使用时,selectAll
按钮和复选框表头将只选择当前显示的行。这是因为客户端无法知道还有哪些其他行可以选择。
此示例让你在启用服务器端处理时对 Select 进行试验。
名 | 姓 | 职位 | 办公室 | 开始日期 | 薪水 |
---|---|---|---|---|---|
名 | 姓 | 职位 | 办公室 | 开始日期 | 薪水 |
- JavaScript
- HTML
- CSS
- Ajax
- 服务器端脚本
- 评论
下面显示的 JavaScript 用于初始化此示例中显示的表格
$('#example').DataTable({ ajax: '../../../../examples/server_side/scripts/ids-objects.php', columns: [ { data: 'first_name' }, { data: 'last_name' }, { data: 'position' }, { data: 'office' }, { data: 'start_date' }, { data: 'salary' } ], layout: { topStart: { buttons: [ 'pageLength', { text: '查看所选信息', action: function (e, dt) { alert( '已选行的信息:'+ JSON.stringify(dt.select.cumulative()) ); } } ] } }, processing: true, select: true, serverSide: true });
new DataTable('#example', { ajax: '../../../../examples/server_side/scripts/ids-objects.php', columns: [ { data: 'first_name' }, { data: 'last_name' }, { data: 'position' }, { data: 'office' }, { data: 'start_date' }, { data: 'salary' } ], layout: { topStart: { buttons: [ 'pageLength', { text: '查看已选 ID', action: function (e, dt) { alert( '已选行的信息:'+ JSON.stringify(dt.select.cumulative()) ); } }, 'selectAll', 'selectNone' ] } }, processing: true, select: true, serverSide: true });
除了上述代码之外,还加载了以下 Javascript 库文件,以便在此示例中使用
下面显示的 HTML 是原始 HTML 表元素,在 DataTables 将其增强之前
此示例基于从库文件(如下)中加载的 CSS 使用了一些额外的 CSS,才能正确显示表格。所使用的附加 CSS 如下所示
以下 CSS 库文件加载用于此示例,以提供表格样式
该表格通过 Ajax 加载数据。已加载的最新数据如下所示。此数据会随着任何附加数据加载而自动更新。
用于对此表格执行服务器端处理的脚本如下所示。请注意,这只是一个使用 PHP 的示例脚本。服务器端处理脚本可以使用任何语言编写,方法是使用 DataTables 文档中描述的协议。