Używam jquery.dataTables.js do tworzenia tabeli, a jedną z kolumn są adresy.
Chciałbym móc sortować adresy według nazwy ulicy zamiast numeru.
Próbowałem zastąpić domyślne sortowanie w następujący sposób:
jQuery.extend(jQuery.fn.dataTableExt.oSort, {
"num-html-pre": function (a) {
var x = String(a).replace(/<[\\s\\S]*?>/g, "");
return parseFloat(x);
},
"num-html-asc": function (a, b) {
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},
"num-html-desc": function (a, b) {
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
}
});
var table = $('#addresses').DataTable({
"order": [[0, "asc"]]
, "aoColumns": [{ "sType": "num-html", "aTargets": [0] }, { "sType": "numbercase" }, null, { "sType": "numbercase" }, null, { "sType": "numbercase" }]
});
Ta połowa działa.
Paginuje po 10 rekordów na stronę i zwykle zwraca 200-300 rekordów, czyli 20-30 stron. Kod posortuje adres (wiersz [0]) alfabetycznie, ale tylko dla 10 rekordów na bieżącej stronie, a nie dla całego zestawu rekordów.
Ponadto łamie funkcjonalność, w której można kliknąć nagłówek kolumny, aby przełączać się między rosnąco / malejąco.
Drobna pomoc? Dzięki.
0
J.Cart
20 listopad 2019, 17:16
1 odpowiedź
Rozgryzłem to, musiałem upuścić parsefloat (x) w funkcji num-html-pre. Oto jak to wygląda teraz:
"num-html-pre": function (a) {
var x = String(a).replace(/<[\\s\\S]*?>/g, "").replace(" ", "");
var y = x.split(' ');
return y[1];
},
0
J.Cart
20 listopad 2019, 17:56