following this tutorial I ended up with this code (that basically loads the child row content from an external file, parsed with JsRender, to an array) :
/* Formatting function for row details - modify as you need */
function format ( d ) {
// `d` is the original data object for the row
// carica il template del dettaglio
$.ajax ({
async: false,
type: "POST",
url: "incaricodetail.html",
cache: false,
success: function(data){
templateHtml = data;
}
});
var template = $.templates(templateHtml);
var htmlOutput = template.render(d);
return htmlOutput;
}
$(document).ready(function() {
$.fn.dataTable.moment( 'DD/MM/YYYY' );
var dettagli = [];
var table = $('#tabellaDati').DataTable( {
"data": <?= json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));?>,
"columns": [
{
"className": 'details-control',
"orderable": false,
"data": null,
"defaultContent":
'<a class="btn btn-xs" href="incarico_edit.php?id=<?=$id;?>&pageFrom=<?=pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME ); ?>" title="Modifica"><span class="glyphicon glyphicon-edit"></span></a>'+
'<a class="btn btn-xs delete-object" href="delete.php?id=<?=$row["id"]?>" delete-id="{$id}"" title="Elimina"><span class="glyphicon glyphicon-trash"></span></a>'+
'<a class="btn btn-xs" href="#" id="mostraDettaglio" title="dettaglio"><span class="glyphicon glyphicon-plus"></span></a>',
"render": function(data, type, row, meta) {
dettagli[meta.row] = format(data);
}
},
{ "data": "id" },
{ "data": "protocollo" },
{
"data": "dataIncarico",
"type": "date",
"dateFormat": "dd-mm-yyyy"
}
],
"order": [[1, 'asc']]
});
// Add event listener for opening and closing details
$('#tabellaDati tbody #mostraDettaglio').on('click', 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(dettagli[row.index()]).show();
tr.addClass('shown');
}
} );
} );
I don't know why, but the ajax call to the file incaricodetail.html is done three times (example, for two records I got 6 POST connections).
DataTables Debugger code: onucak
Whay could it be? Alex