Datatables ajouter plusieurs enfant-lignes
J'ai un tableau accroché à la jQuery datatables. Sur cette base exemple je veux ajouter "caché" de l'enfant de lignes à afficher des informations supplémentaires.
J'ai le texte suivant jsfiddle où j'ai une paire nom/valeur.
<tr data-child-name="Name1" data-child-value="Value 1">
<td class="details-control"></td>
function format ( name, value ) {
return '<div>' + name + ': '+ value + '</div>';
}
$(document).ready(function () {
var table = $('#example').DataTable({});
//Add event listener for opening and closing details
$('#example').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(tr.data('child-name'), tr.data('child-value') )).show();
tr.addClass('shown');
}
});
});
Ma question est comment puis-je ajouter plus d'une paire nom/valeur? De sorte que je peux définir plusieurs lignes comme dans le datatables.net exemple.
Ma source est un script php qui génère le code html comme dans le jsfiddle exemple.
C'est probablement une tâche facile, mais mon jQuery compétences sont très limitées 🙂
Merci.
Mise à JOUR:
Les données proviennent d'une requête ldap:
$ldapResults[$i]
echo "<td>" . utf8_encode($ldapResults[$i]['sn'][0]) . "</td>"
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez conserver les données des attributs pour votre source de données, vous pouvez faire quelque chose comme ceci
JS:
CSS:
HTML:
Vous pouvez créer un tableau de données dont vous avez besoin pour afficher pour chaque ligne
Par exemple :
Et mise à jour de la
format()
Maintenant, il suffit d'ajouter les index du tableau dans un attribut personnalisé
<tr data-child-index="1">
Et enfin
row.child(format(tr.data('child-index'))).show();
EDIT : Pas de html changements nécessaires.
De calculer l'index de façon dynamique à l'aide de jQuery
index()
row.child(format($('#example td.details-control').index($(this)))).show();
DÉMO
Si sont sont à obtenir des données json de montrer que l'enfant puis l'essayer comme,
Et dans la fonction format de le modifier comme,