2011-10-24 59 views
17

Aquí está la página:Jquery DataTables, ordenar por columna específica?

http://csuvscu.com/

necesito para ordenar por la columna de fecha, en este momento se necesita leer 6 de Nov, 5 de noviembre y por último octubre 7.

¿Cómo se hace esto?

+2

Recomendaría añadir un código aplicable a su pregunta. Sí, una persona puede ir a la página que ha vinculado y ver la fuente, pero la idea es que siempre que proporcione la información necesaria aquí, el código seguirá estando disponible, incluso si su sitio desapareciera en algún momento en el futuro. . –

+0

Eche un vistazo a la siguiente [publicación] (http://www.codeunit.co.za/2010/04/04/jquery-datatables-how-to-sort-by-a-specific-column-on-load /) –

+0

@KileyNaro hace un buen comentario acerca de que el sitio no funciona, aún así conservaría el enlace. Fue agradable para mí no tener que volver a crear una prueba en mi máquina local para algo así. Lo hice todo en Chrome javascript consola :) – shaheenery

Respuesta

49

Su Código actual:

$('table').dataTable({ 
    // display everything 
    "iDisplayLength": -1 
}); 

Lo que podría hacer:

oTable = $('table').dataTable({ 
    // display everything 
    "iDisplayLength": -1 
}); 

oTable.fnSort([ [0,'desc'] ]); // Sort by first column descending 

Pero como se señala en el comentario anterior, esto puede ser un método más limpio:

$('table').dataTable({ 
    // display everything 
    "iDisplayLength": -1, 
    "aaSorting": [[ 0, "desc" ]] // Sort by first column descending 
}); 
+0

¡Muchas gracias! –

+1

De nada ... como @emmanual N linked_to anterior, siempre podría usar este formulario que es un limpiador en mi opinión '$ ('tabla'). DataTable ({ " iDisplayLength ": -1 " aaSorting " : [[0, "desc"]] }); ' – shaheenery

+0

cuando intento esto en el método Java para establecer las opciones, me falta algo. ¿Podría agregarlo también para Java? –

12

DataTables usa orden alfabético como el método de clasificación predeterminado. Esto es realmente lo que sucede aquí.

Hay dos soluciones:

  • definir su propio método de clasificación
  • fecha
  • Ordenar la tabla usando una columna oculta que contiene la fecha en la marca de tiempo Unix (segundos transcurridos desde el 1 enero de 1970).

Si desea que los usuarios puedan ordenar la columna por sí mismos, es posible que utilice la primera solución.

--------------- Primera Solución:

Tenemos que decirle el plugin DataTable qué hacer con nuestras columnas. Tendrá que utilizar la propiedad "aoColumns":

$('table').dataTable({ 
    // display everything 
    "iDisplayLength": -1, 
    "aoColumns":[ 
     {"sType": "shaheenery-date"}, 
     {"bSortable": true}, 
     {"bSortable": true}, 
     {"bSortable": true}, 
     {"bSortable": true} 
    ] 
}); 

definir la "shaheenery-date-asc" y "shaheenery-date-desc" método de clasificación. También es necesario una función "getDate" que traducen la fecha en formato numérico:

function getDate(a){ 
     // This is an example: 
     var a = "Sunday November 6, 2011"; 
     // your code =) 
     // ... 
     // ... 
     // You should output the result as YYYYMMDD 
     // With : 
     // - YYYY : Year 
     // - MM : Month 
     // - DD : Day 
     // 
     // Here the result would be: 
     var x = 20111106 
     return x; 
} 

jQuery.fn.dataTableExt.oSort['shaheenery-date-asc'] = function(a, b) {  
     var x = getDate(a); 
     var y = getDate(b); 
     var z = ((x < y) ? -1 : ((x > y) ? 1 : 0)); 
     return z; 
}; 

jQuery.fn.dataTableExt.oSort['shaheenery-date-desc'] = function(a, b) { 
     var x = getDate(a); 
     var y = getDate(b); 
     var z = ((x < y) ? 1 : ((x > y) ? -1 : 0)); 
     return z; 
    }; 

--------------- Segunda solución:

Vamos a utilizar la propiedad "aoColumns" también. Esta vez le decimos a DataTable que oculte la última columna que contendrá la fecha en Unix Timestamp. También es necesario definir esta columna como el predeterminado para la clasificación con "aaSorting":

$('table').dataTable({ 
    // display everything 
    "iDisplayLength": -1, 
    "aaSorting": [[ 5, "desc" ]], 
    "aoColumns":[ 
     {"bSortable": false}, 
     {"bSortable": true}, 
     {"bSortable": true}, 
     {"bSortable": true}, 
     {"bVisible": false} 
    ] 
}); 
2
oTable = $('#DataTables_Table_0').dataTable({ //table id -->DataTables_Table_0 

    iVote: -1, //field name 
    "bRetrieve":true 

}); 

oTable.fnSort([ [1,'desc'] ]); // Sort by second column descending 
1
 $('#id').dataTable({ 
    "bSort": true, 
    "aoColumnDefs": [{ 
     'bSortable': false, 
     'aTargets': [ 1 ] } 
     ] 
}); 
1

Las respuestas existentes están utilizando la sintaxis de tablas de datos heredados. Versiones 1.10+ debe utilizar la siguiente sintaxis:

$('table').dataTable({ 
    "pageLength": -1, //display all records 
    "order": [[ 0, "desc" ]] // Sort by first column descending 
}); 

Referencia:

1

Con la última versión de las tablas de datos se puede ordenar por índice de la columna

var data_table = $('#data-table').DataTable(); 
data_table.order([7,'desc']).draw(); 

Espero que esto ayude.

Cuestiones relacionadas