14. 编辑器:无法找到行标识符

Editor 要求 DataTable 中的每一行都具有一个唯一标识该行的值。当 Editor 向服务器提交编辑和删除请求时,会使用此值,以便服务器知道应提交哪一行。

错误

无法找到行标识符

将在 Editor 无法找到唯一标识值时出现。

含义

每行的唯一标识值是在 DataTables 首次加载表格时包含在数据中的数据片段。它通常是数据库表的primaryKey值(例如自动递增的整数序列),但也可以是任何其他值,例如UUID、哈希或字段组合。

默认情况下,Editor 将在每个行的dataSource对象的名为 DT_RowId 的属性中查找此值。例如,考虑以下用于填充表格的对象

{
    "DT_RowId":   "row_12",
    "first_name": "Tiger",
    "last_name":  "Nixon",
    "position":   "System Architect",
},

在这种情况下,DT_RowId 属性值为 row_12,它将用作唯一标识该行到服务器的值。

如果每行的dataSource中不存在此属性,则可能会出现“无法找到行标识符”错误。

解决方案

解决此问题的关键是确保唯一标识信息(通常是primaryKey值)存在于从服务器发送的数据中。数据属性不必称为 DT_RowId,但数据必须存在。如果唯一标识符不存在,则必须更新服务器端脚本以包含此信息。预构建的 PHP 和 .NET 库会自动使用表的primaryKey列并将该列别名为 DT_RowId

如果您的唯一标识信息不在 DT_RowId 名称下,而是在其他一些数据属性名称下,请使用 idSrc 选项告诉 Editor 在哪里可以找到它。

在以下示例中,idSrc 用于告诉 Editor 从数据属性 id 读取唯一的行值

var editor = new $.fn.dataTable.Editor( {
    ajax:   '/api/staff',
    table:  '#myTable',
    idSrc:  'id',
    fields: [ ... ]
} );

此示例 可在 Editor 网站上找到