Voici la page:
J'ai besoin de trier par la colonne Date, en ce moment, il doit lire le 6 novembre, le 5 novembre et enfin le 7 octobre.
Comment puis-je faire cela?
Votre code actuel:
$('table').dataTable({
// display everything
"iDisplayLength": -1
});
Ce que vous pourriez faire:
oTable = $('table').dataTable({
// display everything
"iDisplayLength": -1
});
oTable.fnSort( [ [0,'desc'] ] ); // Sort by first column descending
Mais comme indiqué dans le commentaire ci-dessous, cela peut être une méthode plus propre:
$('table').dataTable({
// display everything
"iDisplayLength": -1,
"aaSorting": [[ 0, "desc" ]] // Sort by first column descending
});
DataTables utilise l'ordre alphabétique comme méthode de tri par défaut. C'est en fait ce qui se passe ici.
Il existe deux solutions:
Si vous souhaitez que vos utilisateurs puissent trier eux-mêmes la colonne, vous pouvez utiliser la première solution.
--------------- Première solution:
Nous devons dire au plugin DataTable quoi faire avec nos colonnes. Vous devrez utiliser la propriété "aoColumns":
$('table').dataTable({
// display everything
"iDisplayLength": -1,
"aoColumns":[
{"sType": "shaheenery-date"},
{"bSortable": true},
{"bSortable": true},
{"bSortable": true},
{"bSortable": true}
]
});
Définissez ensuite les méthodes de tri "shaheenery-date-asc" et "shaheenery-date-desc". Vous avez également besoin d'une fonction "getDate" qui traduit la date au format numérique:
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;
};
--------------- Deuxième solution:
Nous allons également utiliser la propriété "aoColumns". Cette fois, nous demandons à DataTable de masquer la dernière colonne qui contiendra la date dans l'horodatage Unix. Nous devons également définir cette colonne comme celle par défaut pour le tri avec "aaSorting":
$('table').dataTable({
// display everything
"iDisplayLength": -1,
"aaSorting": [[ 5, "desc" ]],
"aoColumns":[
{"bSortable": false},
{"bSortable": true},
{"bSortable": true},
{"bSortable": true},
{"bVisible": false}
]
});
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
Avec la dernière version des tableaux de données, vous pouvez trier par index de colonne
var data_table = $('#data-table').DataTable();
data_table.order( [7,'desc'] ).draw();
J'espère que cela t'aides.
$ ('# id'). dataTable ({ "bSort": true, "aoColumnDefs": 'bSortable': false, ' aTargets ': [1]} });
Les réponses existantes utilisent la syntaxe DataTables héritée. Les versions 1.10+ doivent utiliser la syntaxe suivante:
$('table').dataTable({
"pageLength": -1, //display all records
"order": [[ 0, "desc" ]] // Sort by first column descending
});
Référence: