2011-12-29 95 views
5

En jquery Datatables es posible definir columnas con un script del lado del servidor? Necesito algo como esto enter image description herejquery datatables - obtener columnas de json

Las columnas con fechas tienen que cargarse desde el servidor. Entonces el número de columnas puede variar.

+1

¿Por qué no obtener los datos completos usando JSON y luego crea una tabla HTML que se puede mostrar al usuario – Moons

+0

yo no entiendo muy bien lo que quiere decir con "mesa de crear HTML". Crear con Javascript? – mik

+0

cuando obtiene el JSON, puede analizarlo con JSON.parse y luego puede iterar los objetos para crear una tabla HTML con JQuery – Moons

Respuesta

5

Para ampliar lo Kamal Singh profundo estaba diciendo:

Se puede crear dinámicamente la mesa sobre la marcha, a continuación, aplicar tablas de datos a ella para obtener la funcionalidad tablas de datos.

// up in the html 
<table id="myDatatable" class="... whatever you need..."></table> 

y luego:

// in the javascript, where you would ordinarily initialize the datatable 
var newTable = '<thead><tr>'; // start building a new table contents 

// then call the data using .ajax() 
$.ajax({ 
    url: "http://my.data.source.com", 
    data: {}, // data, if any, to send to server 
    success: function(data) { 
     // below use the first row to grab all the column names and set them in <th>s 
     $.each(data[0], function(key, value) { 
      newTable += "<th>" + key + "</th>"; 
     }); 
     newTable += "</tr></thead><tbody>";     

     // then load the data into the table 
     $.each(data, function(key, row) { 
      newTable += "<tr>"; 
       $.each(row, function(key, fieldValue) { 
        newTable += "<td>" + fieldValue + "</td>"; 
       }); 
      newTable += "</tr>"; 
     }); 
     newTable += '<tbody>'; 

     $('#myDatatable').html(newTable); // replace the guts of the datatable's table placeholder with the stuff we just created. 
    } 
}); 

// Now that our table has been created, Datatables-ize it 
$('#myDatatable').dataTable(); 

Nota se puede poner en la configuración que .dataTable() de forma normal sin embargo, no 'sAjaxSource', o cualquiera de las funciones de datos-que consigue asociados - esto es aplicando tablas de datos a una tabla ya existente, una que creamos sobre la marcha.

Ok, así que es una forma un poco hacky de hacerlo, pero debería funcionar.

Actualmente no existe un método integrado para hacer esto con datatables dinámicamente. Ver aquí: https://github.com/DataTables/DataTables/issues/273

+0

Gracias, pero estaba buscando una forma más conveniente, similar a esta "sAjaxSource": "scripts/server_processing.php" – mik

5

Creo que he encontrado lo que estaba buscando

voy a pegar un código + enviar un enlace a un Q similares' en el que obtendrá mucha más información ...

$.ajax({ 
    "url": 'whatever.php', 
    "success": function (json) { 
     json.bDestroy = true; 
     $('#example').dataTable(json); 
    }, 
    "dataType": "json" 
}); 

donde JSON es algo como esto

{ 

"aaData": [ 
[ "2010-07-27 10:43:08", "..."], [ "2010-06-28 17:54:33", "..."], 
[ "2010-06-28 16:09:06", "..."], [ "2010-06-09 19:15:00", "..."] 
] , 

"aaSorting": [ 
    [ 1, "desc" ] 
], 

"aoColumns": [ 
    { "sTitle": "Title1" }, 
    { "sTitle": "Title2" } 
] 

} 

aquí un enlace al hilo original

Column definition via JSON array (ajax)

Cuestiones relacionadas