jQuery DataTables: ordenar fechas por columna oculta
He estado trabajando durante un par de días con DataTables y tengo esta tarea: necesito deshabilitar la clasificación inicial y filtrar la primera columna que contiene fechas como Aug 15
dependiendo de la cuarta ( 2015.08.15
), que estará oculta.
Por ejemplo, si tengo:
Aug 15 | 2015.08.15
Aug 7 | 2015.08.07
Aug 3 | 2015.08.03
Aug 20 | 2015.08.20
En orden ascendente debería obtener:
Aug 3 | 2015.08.03
Aug 7 | 2015.08.07
Aug 15 | 2015.08.15
Aug 20 | 2015.08.20
Pero me sale el orden alfabético:
Aug 15 | 2015.08.15
Aug 20 | 2015.08.20
Aug 3 | 2015.08.03
Aug 7 | 2015.08.07
Mi primer código fue algo como:
$("#TableBt" + rid).DataTable({
"aaSorting": [],
"columns": [
null,
null,
{
"title": lC2
},
{
"visible": false
}]
Esto deshabilitó mi clasificación inicial, pero ordenó alfabéticamente mi columna de fecha (la primera y visible).
Después de investigar un poco, cambié el código así:
$("#TableBt" + rid).dataTable({
"asSorting": [],
"aoColumnDef": [
{
"iDataSort": 3,
"aTargets": [4]
},
null,
{
"sTitle": lC2
},
{
"bVisible": false,
"aTargets": [3]
}]
});
Pero ahora todas las columnas son visibles, la clasificación inicial está nuevamente habilitada y la clasificación por fecha funciona solo alfabéticamente.
¿Qué estoy haciendo mal?
SOLUCIÓN
Debe usar columnDefs
para apuntar a la primera columna ( targets: 0
) y definir la columna con la que se usarían los datos para ordenar la primera columna orderData
. También necesitas ocultar la siguiente columna ( targets: 3
) con visible: false
.
$("#TableBt" + rid).DataTable({
columnDefs: [
{ targets: 0, orderData: 3 },
{ targets: 3, visible: false }
]
});
MANIFESTACIÓN
Consulte este jsFiddle para obtener código y demostración.