web-dev-qa-db-fra.com

DataTables - Développez les détails de l'enfant sans utiliser Ajax

Je travaille sur une page qui utilise jquery DataTables (version 1.10). La source TableData est actuellement envoyée comme un simple tableau HTML sur la page rendue et fonctionne parfaitement. Cependant, je veux pouvoir développer les lignes pour afficher des informations détaillées.

Très semblable à l'exemple ici

Cependant, le site avec lequel je travaille actuellement n'a pas encore de services Web configurés dessus, donc je ne pourrai pas faire d'appels ajax pour obtenir les informations étendues comme l'exemple utilise.

Existe-t-il un moyen de fournir toutes les informations nécessaires à la relation parent-enfant sur une page entièrement rendue?

Puis-je en quelque sorte imbriquer les données de la table pour obtenir cela, ou dire à DataTables de faire de chaque ligne du tableau un enfant de celle au-dessus?

J'ai posté cette même question sur les forums de tables de données: Question

19
AaronS

Vous pouvez stocker les données de la ligne enfant dans un attribut data de la ligne parent et modifier la méthode format de l'exemple en conséquence. Quelque chose comme

Dans votre HTML:

<tr data-child-name="test1" data-child-value="10">
    <td>ParentRow</td>
    <td>No. 1</td>
</tr>

Dans le gestionnaire click (ligne 50 de l'exemple):

row.child(format(tr.data('child-name'), tr.data('child-value'))).show();

Et en tant que méthode format quelque chose comme:

function format (name, value) {
    return '<div>Name: ' + name + '<br />Value: ' + value + '</div>';
}
25
Raidri

Bien que techniquement cet exemple n'utilise pas exactement AJAX, c'est essentiellement exactement le même concept. Vous êtes toujours obligé d'ajouter des lignes à l'aide d'une fonction de format, que la fonction de format crée le HTML en obtenant des valeurs de AJAX ou codées en dur dans vos attributs de données, quelle est la différence.

Pour autant que je sache, il n'y a aucun moyen d'insérer les lignes enfants dans votre code HTML depuis le début et de simplement avoir les contrôles de développement MONTRER simplement le code HTML déjà existant pour les lignes enfants, pas construire le code HTML de la ligne enfant, l'insérer dans le DOM et le montrer.

2
Nick Poulos