propiedades filtros example ejemplos custom columns column bootstrap javascript jquery ajax datatables jquery-datatables

javascript - filtros - Representación y ordenación de columnas de Jquery Datatables



jquery datatable column filter select (2)

Estoy trabajando con una tabla de datos que incluye una columna de marcas de tiempo mysql en el formato YYYY-MM-DD HH:MM:SS . Mi tabla está configurada para ordenar inicialmente por esta columna. Los datos de datos detectan correctamente el formato de las marcas de tiempo y se ordenan adecuadamente.

Ahora estoy tratando de alterar la apariencia de esta columna para que sea más fácil de usar, pero no afecta la forma en que se ordena. Entonces, estoy usando la funcionalidad columns.render como esta:

{ "data":"created_at", "name":"date", "visible":true, "title":"Date Created", "render": function(data, type, full, meta){ var date = new Date(data); var options = {year: "numeric", month: "long", day: "numeric"}; return date.toLocaleDateString(''en-US'', options); } }

Tan pronto como hago esto, la clasificación ya no funciona correctamente. Tenía la impresión de que la función de render solo debería afectar a la visualización de los datos, pero que todavía debería ordenarse de acuerdo con los datos subyacentes en el objeto de datos de esa fila. Estos son los documentos que estoy tratando de usar ( http://datatables.net/reference/option/columns.render ).

¿Alguien sabe cómo puedo ordenar según la marca de tiempo real pero mostrar una fecha más fácil de usar?


Bueno, si es una tabla de datos del lado del servidor, lo que puede hacer es editar un json justo antes de que se pase como al principio de ssp.class.php en las nuevas tablas de datos (dígame si está usando la anterior).
NOTA: en las nuevas tablas de datos, es una función incorporada llamada formateador que hace lo mismo pero puede usar una función personalizada como esta

if ($j == 6) { if ($data[$i][$columns[$j][''db'']] == 1) { $data[$i][$columns[$j][''db'']] = ''<label class="btn-danger disabled btn">Stopped</label>''; } else { $data[$i][$columns[$j][''db'']] = ''<label class="btn-success disabled btn">Running</label>''; }

Aquí simplemente estoy editando un 0 y un 1 en mi base de datos a una etiqueta detenida y en ejecución
puede hacer algo como parse_date y almacenar uno reformateado


Creo que lo tengo. Solo tuve que decirle a la función de render que solo operara en los tipos de "visualización":

{ "data":"created_at", "name":"date", "visible":true, "title":"Date Created", "render": function(data, type, full, meta){ if(type == "display"){ var date = new Date(data); var options = {year: "numeric", month: "long", day: "numeric"}; return date.toLocaleDateString(''en-US'', options); } return data; } },