2011-06-29 2 views
5

j'utilise jQuery DataTable pour former une table de ce "data.txt":DataTables jQuery fnrender avec des objets

{ "aaData" : [ 
{  
    "ftitle": "Test1", 
    "link": "http://server.com/test1/", 
    "fname": "test1.pdf", 
    "fid": "test1_353752165.pdf" 
}, 
{  
    "ftitle": "Test2", 
    "link": "http://server.com/test2/", 
    "fname": "test2.pdf", 
    "fid": "test2_353754257.pdf" 
} ] } 

Ceci est mon code js:

$('#example').dataTable({ 
    "bProcessing": true, 
    "sAjaxSource": "data/data.txt", 
    "aoColumns": [ 
     { "sClass": "center", 
      "fnRender": function(oObj) { 
       return oObj.aData[0]+' '+ oObj.aData[2]; 
      } 
     }, 
     { "mDataProp": "fid", "sClass": "center" }, 
     { "mDataProp": "fname", "sClass": "center" } 
    ], 
}); 

Je veux juste pour obtenir les données réelles avec .aData de fnrender() mais cela ne fonctionne qu'avec des données de type tableau seulement. Ce que j'obtiens maintenant est "undefined undefined", si j'utilise un .txt avec juste des données de tableau cela fonctionne bien.

Je pense que je ne comprends pas comment utiliser fnrender proberly, en particulier lorsque vous travaillez avec des objets.

Répondre

18

Vous obtenez "indéfini" car oObj.aData est un objet, pas un tableau, et il n'y a pas de champ "0". syntaxe Utiliser comme ceci:

oObj.aData.link 

ou

oObj.aData["link"] 

Exemple complet (seulement modifié la valeur de retour fnRender):

$('#example').dataTable({ 
    "bProcessing": true, 
    "sAjaxSource": "data/data.txt", 
    "aoColumns": [ 
     { "sClass": "center", 
      "fnRender": function(oObj) { 
       return '<a href="' + oObj.aData.link + '">' + oObj.aData.ftitle + '</a>'; 
      } 
     }, 
     { "mDataProp": "fid", "sClass": "center" }, 
     { "mDataProp": "fname", "sClass": "center" } 
    ], 
}); 
+0

Merci. Après une journée avec DataTables je l'ai illustré par moi-même. J'ai oublié de poster ceci ici et de fermer ce sujet. – SchurigH

+0

Je vous remercie beaucoup pour la suggestion de "oObj.aData.link" parce que j'essayais de construire le mien à partir d'un million de morceaux de rangée et d'essayer de cacher des choses ... quand je pourrais juste éditer le lien comme nécessaire, puis l'ajouter avec fnRender. –

+0

Salut, s'il vous plaît j'ai besoin d'une réponse à un problème similaire, cependant, mon aoColumns utilise mData. Comment puis-je inclure ce "fnRender": fonction (oObj) { retourner '' + oObj.aData.ftitle + ''; dans l'un des mData. Merci. – Kunbi