jQuery DataTables: Comment ajouter un identifiant de ligne à chaque ligne ajoutée dynamiquement?
Résumé
Je suis à l'aide de l'excellent plugin jQuery dataTables de http://www.datatables.net. Dans mon script, je suis l'ajout dynamique de lignes en fonction d'un événement de tir à l'aide de fnAddData
. À l'aide de fnRowCallback
j'ai ajouter un ID de ligne unique. Cette échoue parfois et de ne pas ajouter un numéro de rangée. Dans un test de 46 ajouts de lignes, généralement de 6 à 8 lignes ne peuvent pas obtenir un numéro de rangée.
Ajouter une Ligne de la fonction
function ps_ins(row)
{
var rowArray = row.split('|');
row = rowArray;
var alarmID = parseInt(row[1],10);
$('#mimicTable').dataTable().fnAddData([
alarmID, 'col2', 'col3', 'col4',
'col5', 'col6', 'col7'
]);
}
Lignes sont ajoutées à la table correctement. Le test, je suis en cours d'exécution ajoute 46 lignes, et apparaît comme prévu.
Ajouter l'ID de ligne
Je suis en train d'ajouter un ID unique à chaque ligne afin que je puisse par la suite modifier une ligne spécifique et s'y référer dans la dataTable du cache à l'aide d'une combinaison de fnGetRows et .le filtre.
Je suis en train de faire cela à l'aide de fnRowCallback au cours de l'étape d'initialisation. J'ai gardé tous les autres paramètres, juste au cas où il n'y a rien là-bas qui pourrait avoir un impact sur le problème.
$('#mimicTable').dataTable({
"sDom": 'lip<"mimicSpacer">f<"numUnAck">rt',
"sScrollY": "365px",
"aaSorting": [[4,'desc'],[5,'desc']],
"iDisplayLength": 15,
"aLengthMenu": [[15, 50, 100, -1], [15, 50, 100, 'All']],
"bAutoWidth": false,
"aoColumns": [
null,
{ "sWidth": "20%" },
{ "sWidth": "22%" },
{ "sWidth": "9%" },
{ "sWidth": "9%" },
{ "sWidth": "20%" },
{ "sWidth": "20%" }
],
"fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull) {
$(nRow).attr("id",'alarmNum' + aData[0]);
return nRow;
}
});
Un console.log
de l'objet dataTable montre:
Comme vous pouvez le voir, n ° 14 a l'id de ligne et aussi le bon rowStripe classe. #15 (et au-delà) ne fonctionne pas.
Alors, pourquoi est fnRowCallback pas de tir à chaque fois qu'une ligne est ajoutée, seulement parfois? Peut-être il ya une meilleure façon d'ajouter un ID de ligne lorsqu'une ligne est ajoutée?
source d'informationauteur psynnott
Vous devez vous connecter pour publier un commentaire.
Trouvé la solution:
http://www.datatables.net/forums/discussion/2119/adding-row-attributes-after-fnadddata/p1
Pour quelqu'un d'autre qui veulent une solution rapide, j'ai fait:
Je sais que c'est un assez vieux thread, mais cela peut aider les autres.
La meilleure façon que je le fais pour ajouter l'attribut id de la dernière ajouté la ligne dès que j'ai appelé le tableau de données de la fonction
fnAddData
est:Essayez cela, il a travaillé pour moi bien:
Il y a quelque chose d'inattendu avec votre code dans le jsbin, même si elle semble fonctionner. Il initialise avec les "navigateurs" ensemble de données. Puis il s'efface. Puis il fait une nouvelle table avec une rangée. Puis il s'efface. Puis il fait un nouveau tableau avec deux lignes. Puis il s'efface. Puis il fait une nouvelle table avec trois lignes.
Je dois obtenir un meilleur sens de l'exemple de code et de son objectif final (et hélas mon attention est détournée en ce moment), mais vous devez être conscient que fnRowCallback DEVRAIT être la façon de le faire, et qu'il y a de nombreux redondant table des constructions et des ajouts de lignes qui vont influer sur les performances et la flexibilité de modifier le rendu dans l'avenir.
Vous pouvez utiliser DT_RowId lorsque vous ajoutez une ligne, et l'utilisation de l'objet au lieu d'un tableau, voir ci-dessous:
Cela a fonctionné pour moi