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 网站上找到。