我正在从codeigniter控制器中获取数据,并使用数据表显示它。我想在子行中显示其他详细信息。我可以单击按钮打开和关闭以折叠所有子行,使其看起来像手风琴。所以我的问题是我想将所有子行都折叠为默认值,但仍然可以使用按钮将其关闭。我已经阅读了许多解决方案,但是仍然无法正常工作。这是我的代码
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>Add Ons</td>'+
'<td>Remarks</td>'+
'</tr>'+
'<tr>'+
'<td>---</td>'+
'<td>'+d.remarks+'</td>'+
'</tr>'+
'</table>';
}
$(document).ready(function() {
var table = $('#mydata').DataTable( {
ajax: {
url: "/chef/get_orderlist",
dataSrc: ''
},
colReorder: {
realtime: true
},
"aoColumns" : [
{
"className": 'details-control',
"data": null,
"defaultContent": ''
},
{data : 'order_id'},
{data : 'cust_name'},
{data : 'table_code'},
{data : 'menu_name'},
{data : 'order_qty'},
{
data: null,
render: function ( data, type, row, meta) {
return '<button id="status" class="status btn dt-buttons '+ data.item_status +
'" data-order_item_id="'+ data.order_item_id +'"'+
' data-item_status="'+ data.item_status +'" onclick="change_status()">'+ data.item_status +'</button>';
}
}
]
});
// FOR OPENING AND CLOSING THE ACCORDION
$('#mydata tbody').on('click', 'td.details-control', function () {
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');
}
} );
// THIS IS THE PART WHERE THE CHILD ROWS SHOULD BE OPENED AS "DEFAULT"
$("#mydata").DataTable().rows().every( function () {
var tr = $(this.node());
this.child(format(tr.data('child-value'))).show();
tr.addClass('shown');
});
} );
答案 0 :(得分:0)
您复制了针对该特定问题的this answer。
对于您而言,正确的代码应为:
{{1}}
有关更多示例和信息,请参见jQuery DataTables: jQuery DataTables: How to expand/collapse all child rows。