2011-06-29 23 views
5

que estoy usando jQuery DataTable para formar una mesa fuera de este "datos.txt":DataTables jQuery fnrender con objetos

{ "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" 
} ] } 

Este es mi código 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" } 
    ], 
}); 

sólo quiero para obtener los datos reales con .aData de fnrender(), pero esto solo funciona con datos de solo matriz. Lo que obtengo ahora es "indefinido indefinido", si uso un .txt con solo datos de matriz, funciona bien.

Creo que no entiendo bien cómo usar fnrender proberly, especialmente cuando se trabaja con objetos.

Respuesta

18

Te estás "indefiniendo" porque oObj.aData es un objeto, no una matriz, y no hay un campo "0". Uso de sintaxis como esta:

oObj.aData.link 

o

oObj.aData["link"] 

Ejemplo completo (valor de retorno fnRender única modificada):

$('#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

Gracias. Después de un día con DataTables lo hice por mi cuenta. Olvidé publicar esto aquí y cerrar este tema. – SchurigH

+0

Muchas gracias por la sugerencia de "oObj.aData.link" porque estaba tratando de construir el mío a partir de un millón de piezas de la fila y tratando de ocultar cosas ... cuando solo podía sacar el enlace como fuera necesario, y luego agregarlo con fnRender. –

+0

Hola, necesito una respuesta a un problema similar, sin embargo, mi aoColumns usa mData. ¿Cómo puedo incluir esta función "fnRender": (oObj) { return '' + oObj.aData.ftitle + ''; en uno de los mData. Gracias. – Kunbi

Cuestiones relacionadas