14. 編輯器:無法找到列識別符

編輯器要求 DataTable 中的每一列都有一個唯一識別該列的值。當編輯器向伺服器提交編輯和刪除請求時,會使用此值,以便伺服器知道應該提交哪一列。

錯誤訊息

無法找到列識別符

當編輯器無法找到唯一識別值時,就會發生此錯誤。

含義

每一列的唯一識別值是 DataTables 首次載入表格時包含在資料中的一部分資料。它通常是資料庫表格的主鍵值(例如,自動遞增的整數序列),但它可以是任何其他值,例如 UUID、雜湊或欄位的組合。

預設情況下,編輯器將在每個列的資料來源物件的 DT_RowId 屬性中尋找此值。例如,考慮以下用於填入表格的物件

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

在此範例中,DT_RowId 屬性值為 row_12,它將作為唯一識別列傳送給伺服器的值。

如果每個列的資料來源中不存在此屬性,則可能會發生「無法找到列識別符」錯誤。

解決方案

解決此問題的關鍵是確保從伺服器傳送的資料中包含唯一識別符資訊(通常是主鍵值)。資料屬性不需要稱為 DT_RowId,但資料必須存在。如果不存在唯一識別符,則必須更新伺服器端腳本以包含此資訊。預先建立的 PHP 和 .NET 函式庫會自動使用表格的主鍵欄位,並將其別名為 DT_RowId

如果您的唯一識別符資訊不在名稱 DT_RowId 下,而是在其他資料屬性名稱下,請使用 idSrc 選項,告知編輯器在哪裡找到它。

在以下範例中,使用 idSrc 告知編輯器從資料屬性 id 中讀取唯一的列值

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

編輯器網站上提供了此範例。