Comment append plusieurs lignes à un jQuery DataTable à partir d’une chaîne HTML

J’ai un DataTable jQuery que je voudrais append des lignes tr HTML. Ces lignes se présentent sous la forme d’une chaîne html. Je peux les append à la table à l’aide de jQuery standard, mais cela signifie qu’ils contournent l’object DataTable et sont perdus lorsque la table est utilisée. Pour utiliser la fonction DataTable rows.add (), cela signifierait que j’aurais besoin des lignes au format tableau.

// table_rows actually comes from an ajax call. var table_rows = '.........'; // This successfully adds the rows to the table... :-) $('#datatable_id').append(table_rows); // ...but those rows are lost when we redraw the DataTable. :-( table = $("#datatable_id").DataTable(); table.order([0,'desc']).draw(); 

Malheureusement, je ne peux pas changer facilement ce qui est renvoyé par le serveur. Il semble donc que j’ai besoin d’une solution côté client.

Vous ne devez pas manipuler directement la table et utiliser les méthodes d’API jQuery DataTables appropriées.

Vous pouvez utiliser la méthode API rows.add() pour append plusieurs lignes tout en fournissant des nœuds tr . Vous pouvez construire des nœuds tr partir de la réponse de votre serveur.

Par exemple:

 var table_rows = 'Tiger NixonSystem ArchitectEdinburgh612011/04/25$320,800'; table.rows.add($(table_rows)).draw(); 

Voir ce jsFiddle pour le code et la démonstration.

Si vous ajoutez plusieurs tr comme ci-dessous.

 var table_rows = ' Tiger NixonSystem ArchitectEdinburgh612011/04/25$320,800 \r\nTiger NixonSystem ArchitectEdinburgh612011/04/25$320,800'; 

Dans la chaîne ci-dessus, il y a des espaces entre et

et \r\n . vous devez supprimer ces espaces et la balise \r\n .

 obj = obj.replace(/^\s*|\s*$/g, ''); obj = obj.replace(/\\r\\n/gm, ''); var expr = "\\s* 

Le code ci-dessus a résolu mon problème.