Quindi la domanda è già stata richiesta here, ma la soluzione non funziona per me (potrei fare qualcosa di sbagliato). Voglio ordinare le mie tabelle in ordine alfabetico ("tipo": "naturale"), ma voglio che le celle vuote siano in fondo (per desc e asc).Ordinamento (in ordine alfabetico) per ignorare le celle vuote: dataTables
Ho provato la precedente soluzione proposta dal FBAS:
jQuery.fn.dataTableExt.oSort['mystring-asc'] = function(x,y) {
var retVal;
x = $.trim(x);
y = $.trim(y);
if (x==y) retVal= 0;
else if (x == "" || x == " ") retVal= 1;
else if (y == "" || y == " ") retVal= -1;
else if (x > y) retVal= 1;
else retVal = -1; // <- this was missing in version 1
return retVal;
}
jQuery.fn.dataTableExt.oSort['mystring-desc'] = function(y,x) {
var retVal;
x = $.trim(x);
y = $.trim(y);
if (x==y) retVal= 0;
else if (x == "" || x == " ") retVal= -1;
else if (y == "" || y == " ") retVal= 1;
else if (x > y) retVal= 1;
else retVal = -1; // <- this was missing in version 1
return retVal;
}
Con:
$(document).ready(function() {
$('#classement').dataTable({
"aoColumns": [
null,
null,
{ "type" : "mystring" },
{ "type" : "mystring" },
null
]
});
});
Con una tabella come | N° | Edit | Song | Singer | Url |
Ordinando solo su Song e Singer.
Le celle emty sono in fondo (come previsto) ma ora l'ordinamento non ha logica (nessun ordine alfabetico, dovrei usare un'altra proprietà in dataTable?).
Qualcuno ha una soluzione?
Modifica: Se aggiungiamo una linea dinamicamente, come aggiornare l'ordinamento?
$("#example").find('tbody')
.append($('<tr>')
.append($('<td>')
.text('Boro')
)
);
sarà bene mettere codice sul jsfiddle – codebased