服务器端处理

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 文档中描述的协议

      其他示例