J'ai un problème avec Datatables
. J'ai également parcouru ce lien qui n'a donné aucun résultat. J'ai inclus toutes les conditions préalables où j'analyse les données directement dans le DOM. Veuillez m'aider à résoudre ce problème.
Scénario
$(document).ready(function() {
$('.viewCentricPage .teamCentric').dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"bPaginate": false,
"bFilter": true,
"bSort": true,
"aaSorting": [
[1, "asc"]
],
"aoColumnDefs": [{
"bSortable": false,
"aTargets": [0]
}, {
"bSortable": true,
"aTargets": [1]
}, {
"bSortable": false,
"aTargets": [2]
}],
});
});
jquery
console
datatables
Thriveni
la source
la source
Réponses:
FYI dataTables nécessite une table bien formée. Il doit contenir des balises
<thead>
et<tbody>
, sinon il renvoie cette erreur. Vérifiez également que toutes vos lignes, y compris la ligne d'en-tête, ont le même nombre de colonnes.Ce qui suit générera une erreur (no
<thead>
et<tbody>
tags)Ce qui suit générera également une erreur (nombre inégal de colonnes)
Pour plus d'informations, lisez plus ici
la source
Une cause fréquente
Cannot read property 'fnSetData' of undefined
est le nombre de colonnes incompatibles, comme dans ce code erroné:Alors que le code suivant avec un
<th>
par<td>
(le nombre de colonnes doit correspondre) fonctionne:L'erreur apparaît également lors de l'utilisation d'une tête bien formée avec un colspan mais sans deuxième rangée.
Pour une table avec 7 colonnes, ce qui suit ne fonctionne pas et nous voyons "Impossible de lire la propriété 'mData' de non défini" dans la console javascript:
Pendant que cela fonctionne:
la source
tr
utilisé pour entourer tous lesth
éléments. Laissez-le ici au cas où quelqu'un trouverait cela utile!th
colonne dans monthead
, ce qui provoquait l'erreur. La réponse de Nathan Hanna semble également indiquer ce problème.th
dans monthead
aussi!colspan
interprétation sont toujours un problème. J'ai dû mettre du blancth
et noncolspan
pour me débarrasser des erreurs. Mais quel simple ajout pour obtenir cette fonctionnalité. BTW: Rails 5.1.5, Bootstrap 4.0.0. Je viens d'ajouter les feuilles de style et les CDN de script, et$(document).ready…
à la page.J'ai eu ce même problème en utilisant les données DOM dans une vue Rails créée via le générateur d'échafaudage. Par défaut, la vue omet les
<th>
éléments des trois dernières colonnes (qui contiennent des liens pour afficher, masquer et détruire des enregistrements). J'ai trouvé que si j'ajoutais des titres pour ces colonnes dans un<th>
élément dans le<thead>
, cela corrigeait le problème.Je ne peux pas dire si c'est le même problème que vous rencontrez car je ne peux pas voir votre html. Si ce n'est pas le même problème, vous pouvez utiliser le débogueur Chrome pour déterminer sur quelle colonne il génère une erreur en cliquant sur l'erreur dans la console (qui vous amènera au code sur lequel il échoue), puis en ajoutant un conditionnel point d'arrêt (at
col==undefined
). Lorsqu'elle s'arrête, vous pouvez vérifier la variablei
pour voir sur quelle colonne elle se trouve actuellement et qui peut vous aider à comprendre ce qui diffère de cette colonne des autres. J'espère que cela pourra aider!la source
colspan="3"
mais j'ai eu des erreurs (c'est comme ça que je me suis retrouvé sur cette page). J'ai tripoté un peu, mais j'ai finalement abandonné et créé troisth
éléments et avec le premier "Détails" et laissé les deux derniers vides. Les tripotages suggèrent que dataTables a des problèmes avec colspan comme le dernier de la série. Le correctif OP est étrange dans la mesure où le nombre de colonnes ne correspond pas. Je n'avais aucune condition sur la table, commeorder
ousortable
. J'ai ajouté ceux-ci après l'avoir fait fonctionner.Ayant
<thead>
et<tbody>
avec le même nombre de<th>
et<td>
résolu mon problème.la source
Cela peut également se produire si vous avez des arguments de table pour des choses comme celles
'aoColumns':[..]
qui ne correspondent pas au nombre correct de colonnes. Des problèmes comme celui-ci peuvent généralement se produire lors de la copie de code collé à partir d'autres pages pour démarrer rapidement l'intégration de vos tables de données.Exemple:
Cela ne fonctionnera pas:
Mais cela fonctionnera:
la source
Une autre raison pour laquelle cela se produit est à cause du paramètre colonnes dans l'initialisation DataTable.
Le nombre de colonnes doit correspondre aux en-têtes
J'avais 7 colonnes
la source
Vous devez supprimer votre
colspan
et le nombre deth
ettd
doit correspondre.la source
Astuces 1:
Reportez-vous à ce lien, vous obtenez quelques idées:
https://datatables.net/forums/discussion/20273/uncaught-typeerror-cannot-read-property-mdata-of-undefined
Conseils 2:
<thead></thead>
et<tbody></tbody>
balisesstyle='display:none'
la même propriété s'applique en vous à la fois à l'en-tête et au corps.<td>, <tr>
problèmela source
dans mon cas, cette erreur s'est produite si j'utilise une table sans en-tête
la source
J'ai fait face à la même erreur, quand j'ai essayé d'ajouter colspan au dernier
et l'a résolu en ajoutant une colonne cachée à la fin de tr
Une explication à cela est que, pour une raison quelconque, DataTable ne peut pas être appliqué à une table avec colspan dans le dernier th, mais peut être appliqué, si colspan est utilisé dans n'importe quel milieu.
Cette solution est un peu hacky, mais plus simple et plus courte que toute autre solution que j'ai trouvée.
J'espère que cela aidera quelqu'un.
la source
Problème légèrement différent pour moi des réponses données ci-dessus. Pour moi, le balisage HTML était bien, mais une de mes colonnes dans le javascript était manquante et ne correspondait pas au html.
c'est à dire
Mon script: -
la source
J'avais une table générée dynamiquement, mais mal formée avec une faute de frappe. J'ai copié une
<td>
balise dans une autre<td>
par erreur. Mon nombre de colonnes correspondait. J'avais<thead>
et des<tbody>
balises. Tout concordait, sauf cette petite erreur que je n'ai pas remarquée depuis un moment, car ma colonne contenait beaucoup de balises de liens et d'images.la source
J'avais rencontré le même problème mais je générais la table dynamiquement . Dans mon cas, ma table avait des balises
<thead>
et manquantes<tbody>
.voici mon extrait de code s'il a aidé quelqu'un
la source
En plus de l'incohérence et des nombres, un élément manquant dans la partie des colonnes de scripts datables peut également en être la cause. Correction de la correction de ma barre de recherche de tables de données.
Je parle de cette partie;
J'ai eu du mal avec cette erreur jusqu'à ce qu'on m'indique que cette partie avait un «zéro» de moins que mon nombre total de têtes.
la source
Celui-ci m'a rendu fou - comment rendre un DataTable avec succès dans une vue .NET MVC. Cela a fonctionné:
Script dans le fichier JS:
la source
Dans mon cas, et en utilisant ASP.NET GridView, UpdatePanel et avec DropDownList (avec le plugin Chosen où je réinitialise la valeur à zéro en utilisant une ligne Javascript), j'ai eu cette erreur et j'ai tout essayé sans espoir pendant des jours. Le problème était que le code de ma liste déroulante dans le code était le suivant et lorsque je sélectionne une valeur deux fois pour appliquer son action aux lignes de grille sélectionnées, j'obtiens cette erreur. J'ai pensé pendant des jours que c'était un problème Javascript (encore une fois, dans mon cas) et finalement le correctif donnait zéro pour la valeur drowpdown avec le processus de mise à jour:
C'était ma faute:
la source
Vous devez encapsuler vos lignes
<thead>
pour les en-têtes de colonne et<tbody>
pour les lignes. Assurez-vous également que vous avez le numéro correspondant. des en-têtes de colonne<th>
comme vous le faites pour latd
la source
Je peux provenir du champ aoColumns. Comme indiqué ICI
Ensuite, vous devez ajouter des champs comme dans les colonnes du tableau
la source
dans mon cas, la cause de cette erreur est que j'ai 2 tables qui ont le même nom d'ID avec une structure de table différente, en raison de mon habitude de copier-coller le code de la table. assurez-vous d'avoir un identifiant différent pour chaque table.
la source
J'ai trouvé une "solution".
Ce code ne fonctionne pas:
Mais c'est ok:
Je pense que le problème est que le dernier TH ne peut pas avoir d'attribut colspan.
la source