我正在尝试在单击按钮时获取当前行的数据库 ID。
我已经看到了一些与此方面有关的示例,并尝试了很多,但似乎它们主要与旧版表格工具扩展有关,而我正在使用编辑器。
使用编辑器手册中的 idSrc 选项,我收到包含数据库 id/主键值的 JSON 服务器端响应:
{
"data":[
{
"id":"1",
"name":"Test Name",
}
],
"options":[],
"files":[]
}
现在我尝试通过单击通过 API 函数附加到行的按钮来获取该值:row().id()
在此函数的示例中,它提供了一个如何获取行 id 值(现在是数据库 id?)的清晰示例:
var table = $('#myTable').DataTable();
$('#myTable').on( 'click', 'tr', function () {
var id = table.row( this ).id();
alert( 'Clicked row id '+id );
});
所以我按如下方式实现了这一点:
var editor;
$(document).ready(function() {
editor = new $.fn.dataTable.Editor( {
ajax: "/names.php",
table: "#example",
idSrc: "id",
fields: [ {
label: "Name:",
name: "name"
} ]
});
var table = $('#example').DataTable( {
dom: "Bfrtip",
ajax: "/names.php",
columns: [
{ data: "name" }
]
});
$('#example').on( 'click', 'tr', function () {
var id = table.row( this ).id();
alert( 'Clicked row id ' + id );
});
});
这里的问题是,当我单击行(tr)时,它会提示如下:Clicked row id undefined
为什么我得到一个未定义的值,而它应该发回行 id?
实例化数据表时,必须指示 id 字段 rowId
,该字段应指示为列的名称
var table = $('#example').DataTable( {
dom: "Bfrtip",
ajax: "/names.php",
columns: [
{ data : "id" },//id is the name of your data
{ data: "name" }
],
rowId: 'id' //Here assign the id to your table
});
结果:https://jsfiddle.net/cmedina/7kfmyw6x/17/
正如@CMedina指出的,rowId
规定了JSON数据中的哪个值用作每行id属性。
以下是用于获取以 row_
为前缀的行 ID 值的代码:
$('#example').on( 'click', 'tr', function () {
// Get the rows id value
var id = table.row( this ).id();
// Filter for only numbers
id = id.replace(/'D/g, '');
// Transform to numeric value
id = parseInt(id, 10);
// So instead of returning the actual id which is row_1
// We get back just the primary key which is 1
alert( 'Clicked row id '+id );
});