我有一个数据表,其中的子行由以下函数填充:
$('#myDataTable tbody').on('click', 'td.details-control', function () {
console.log(table.row(this).data());
var tr = $(this).closest('tr');
var row = table.row(tr);
if (row.child.isShown())
{
// This row is already open - close it
row.child.hide();
tr.removeClass('shown');
}
else {
// Open this row
row.child(format(row.data())).show();
tr.addClass('shown');
}
});
格式化函数:
function format(d) {
// `d` is the original data object for the row
return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">' +
'<tr>'+
'<td><strong>BLABLA1</td>' +
'<td align="center">'+
d.BLABLA1 +
'</td>'+
'<td><strong>BLABLA2</td>' +
'<td align="center">'+
d.BLABLA2+
'</td>'+
'</tr>' +
'</table>';
}
但是,当我显示页面并展开子行时,列的值是“未定义”...
数据表中的行是从模型(使用 MVC 4)填充的,如下所示:
<tbody>
@foreach (var item in Model)
{
<tr>
<td align="center">
@Html.DisplayFor(modelItem => item.BLABLA3)
</td>
.....</tr>}
</tbody>
我想我缺少将 row.data() 加载到格式化函数中的方法......这样做的正确方法是什么?我已经检查了所有文档,它们都使用了我尝试过的内容......
最佳答案
是的,这个页面很奇怪https://datatables.net/examples/api/row_details.html解释一下我们必须写:
'<td>'+d.myrow+'</td>'+
但是如果我这样做,行的值是“未定义”,所以我必须写:
'<td>'+d["myrow"]+'</td>'+
它的作品!
关于javascript - 子行数据表 - 行数据值未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32095159/