Comment faire pour forcer les tables de données de re-rendre ou de re-charge statique dat?
J'ai une Table qui utilise des données statiques à partir d'un fichier HTML.
À l'aide de la "columnDefs de données", ou le "columnDefs rendu" de la fonction, je peux faire partie de la sortie de réglage - masquage de certains de la banque TD en fonction de leur contenu, et leur position sur la page actuellement affichée (sans modifier la source de données).
Toutefois, lorsqu'un utilisateur change le nombre de lignes affichées, je puis avoir besoin de réinitialiser & refaire ma ajustements sur les données, comme les différentes cellules aurez maintenant besoin d'obturation, et déjà effacé les inscriptions peuvent avoir besoin de montrer à nouveau.
Donc, ce que je veux faire, c'est dans la "longueur.dt" de l'événement (nombre d'afficher les lignes juste changé), appel quelque chose qui provoque la Datatable soit de re-rendre la totalité de la table, ou re-charger l'ensemble des données (qui serait, de ce fait appeler mon columnDefs rendre ou columnDefs des fonctions de données)
Est-ce possible? Ou est-ce mon approche erronée et j'ai besoin de trouver un autre chemin?
C'est correct. Réinitialiser lorsque le nombre de lignes visibles des changements, donc, je peux alors modifier la sortie à partir de zéro.
À l'aide de
render
modifie les données sur le point d'être rendu, d'où son nom. Il ya un couple de choses que vous pourriez faire - avoir une condition dans render
qui modifie la sortie dans un cas, et montre non modifié des données dans un autre cas. Sinon regarde 'fnRowCallback que vous pouvez utiliser le modifier les données après la ligne a été rendue. Là encore, il devrait y avoir une instruction conditionnelle pour déterminer ce qui est affiché. Ou utiliser jquery pour modifier la table après qu'il ait été rendue, puis fnDraw()
serait de le remettre à un état non modifié.Le rendu, il me semble, une seule est appelée une seule fois, lorsque la table est créée. Si plus tard, je fais quelque chose, dites modifier le nombre de lignes affichées, le rendu n'est pas appelée à nouveau. C'est un peu ce que je cherche. Un moyen de forcer le rendu à se produire à nouveau, et ainsi de réinitialiser les données de ses attirer les, lorsque le nombre de lignes de changement.
Parlez-vous de la
render
à la ligne de niveau ie 'render': function (data, type, full, meta) {
? Ce t appelée chaque fois que le tableau est tiré de débogage ou de mettre un alert
pour vérifier cela.OriginalL'auteur Dave | 2016-02-03
Vous devez vous connecter pour publier un commentaire.
Utilisation
rows().invalidate()
à invalider les données pour toutes les lignes etdraw()
le rafraîchissement de la table.Veuillez noter que
'data'
dansrows().invalidate('data')
est nécessaire si vous utilisez Javascript structure de données (avecdata
oucolumns.render
options).Merci beaucoup, très utile!
Oui, je vais changer les valeurs avec l'AJAX et ces lignes sont pratiques lorsque des données est en train de changer sur le serveur, donc les forces de re-rendre l'obtention de la dernière info.
OriginalL'auteur Gyrocode.com
Vous permet de redessiner l'ensemble de la DataTable sur la longueur.dt de l'événement.
Modifier
Ici vous pouvez voir plus d'infos et d'autres paramètres à passer à la méthode draw: https://datatables.net/reference/api/draw%28%29
Mais si il est déjà en train de redessiner les cellules dans le vide, pourquoi avez-vous besoin de recharger les données source d'origine et vierge encore si ce sera le même résultat?
Parce que si la cellule est vide ou n'est pas basé sur le nombre de lignes affichées. Ainsi, lorsque l'utilisateur change le nombre de lignes affichées, j'ai besoin de démarrer à partir des données d'origine, puis de régler la sortie en conséquence.
Peut-être que vous avez besoin pour créer la table à partir de 0 avec jQuery ou DOM et puis de le convertir en DataTable, mais il peut ne pas être le meilleur choix.
OriginalL'auteur Khalav
Utilisation
'destroy': true
.OriginalL'auteur Vivekanand Panda