DataTables 行详细信息 row() undefined
DataTables Row Details row() undefined
我目前正在尝试实现这种 table:
https://datatables.net/examples/server_side/row_details.html
我做了一个 copy/paste 的例子 javascript 将它添加到我的 table 但它一直崩溃 :
$("#dyntable2 tbody").on("click", "tr td.details-control", function () {
var tr = $(this).closest("tr");
var row = dt.row(tr); <<< At this line
出现该错误:"Uncaugth TypeError: undefined is not a function (anonymous function)"
编辑:这是完整的javascript:
var $ = jQuery.noConflict();
function format(d) {
return 'Flow Name + Id: ' + d.Flow.Name + ' ' + d.Flow.Id + '<br>' +
'Id Session: ' + d.Id + '<br>' +
'Placeholder for now, quick monitoring tool after';
}
$(document).ready(function() {
var dt = $('#dyntable2').dataTable({
lengthMenu: [[10, 25, 50, -1], ["10", "25", "50", "All"]],
processing: true,
searching: true,
paging: true,
pagingType: "full_numbers",
serverSide: true,
ajax: {
url: "url",
type: "POST"
},
language: {
url: "jquery/datatables/French.txt"
},
columns: [
{
"class": "details-control",
data: null,
orderable: false,
defaultContent: ""
},
[...]
]
});
var detailsRows = [];
$("#dyntable2 tbody").on("click", "tr td.details-control", function() {
var tr = $(this).closest("tr");
var row = dt.row(tr);
var idx = $.inArray(tr.attr("id"), window.detailRows);
if (row.child.isShown()) {
tr.removeClass("details");
row.child.hide();
// Remove from the 'open' array
window.detailRows.splice(idx, 1);
} else {
tr.addClass("details");
row.child(format(row.data())).show();
// Add to the 'open' array
if (idx === -1) {
window.detailRows.push(tr.attr("id"));
}
}
});
// On each draw, loop over the `detailRows` array and show any child rows
dt.on("draw", function() {
$.each(window.detailRows, function(i, id) {
$("#" + id + " td.details-control").trigger("click");
});
});
});
由于我使用了与示例相同的代码,我该如何解决这个问题?
在您的代码中,dt
是一个 jQuery 对象,它没有 row()
函数。使用 API 和 dt.api().row(tr)
来获取行。
PS:这是从 1.10 及之前版本到 1.11 的更改。
我目前正在尝试实现这种 table: https://datatables.net/examples/server_side/row_details.html
我做了一个 copy/paste 的例子 javascript 将它添加到我的 table 但它一直崩溃 :
$("#dyntable2 tbody").on("click", "tr td.details-control", function () {
var tr = $(this).closest("tr");
var row = dt.row(tr); <<< At this line
出现该错误:"Uncaugth TypeError: undefined is not a function (anonymous function)"
编辑:这是完整的javascript:
var $ = jQuery.noConflict();
function format(d) {
return 'Flow Name + Id: ' + d.Flow.Name + ' ' + d.Flow.Id + '<br>' +
'Id Session: ' + d.Id + '<br>' +
'Placeholder for now, quick monitoring tool after';
}
$(document).ready(function() {
var dt = $('#dyntable2').dataTable({
lengthMenu: [[10, 25, 50, -1], ["10", "25", "50", "All"]],
processing: true,
searching: true,
paging: true,
pagingType: "full_numbers",
serverSide: true,
ajax: {
url: "url",
type: "POST"
},
language: {
url: "jquery/datatables/French.txt"
},
columns: [
{
"class": "details-control",
data: null,
orderable: false,
defaultContent: ""
},
[...]
]
});
var detailsRows = [];
$("#dyntable2 tbody").on("click", "tr td.details-control", function() {
var tr = $(this).closest("tr");
var row = dt.row(tr);
var idx = $.inArray(tr.attr("id"), window.detailRows);
if (row.child.isShown()) {
tr.removeClass("details");
row.child.hide();
// Remove from the 'open' array
window.detailRows.splice(idx, 1);
} else {
tr.addClass("details");
row.child(format(row.data())).show();
// Add to the 'open' array
if (idx === -1) {
window.detailRows.push(tr.attr("id"));
}
}
});
// On each draw, loop over the `detailRows` array and show any child rows
dt.on("draw", function() {
$.each(window.detailRows, function(i, id) {
$("#" + id + " td.details-control").trigger("click");
});
});
});
由于我使用了与示例相同的代码,我该如何解决这个问题?
在您的代码中,dt
是一个 jQuery 对象,它没有 row()
函数。使用 API 和 dt.api().row(tr)
来获取行。
PS:这是从 1.10 及之前版本到 1.11 的更改。