Я использую DataTables версии 1.10. Я хочу сделать столбец отсортированным по числовому значению, когда значение, указанное в столбце, не является числовым.DataTables: сортировать по числовому заказу данных не работает?
Я вижу, что what I need to do is add a data-sort
attribute для каждой ячейки таблицы. Я попытался добавить это с помощью метода createdRow
, но хотя я вижу атрибут в HTML, он не сортируется численно.
Это мой код:
var data = [
{
'name': 'France',
'played': 1000,
'won': 11
},
{
'name': 'England',
'played': 1000,
'won': 100
},
{
'name': 'Germany',
'played': 1000,
'won': 109
}
];
$.each(data, function(i, d) {
d.won_percent = (d.won/d.played) * 100;
d.won_display = d.won + '/' + d.played;
d.won_display += ' (';
d.won_display += Math.round(d.won_percent * 10)/10;
d.won_display += '%)';
});
var columns = [
{ "data": "name",
"title": "Country"
},
{ "data": "won_display",
"title": "Games won"
},
{ "data": null,
"title": "Notes",
"defaultContent": 'Some other text here, included just to test that responsive works'
}
];
var html = '<table class="table table-bordered table-hover" cellspacing="0" width="100%" id="myTable"></table>';
$('#table').html(html);
$("#myTable").DataTable({
data: data,
columns: columns,
order:[[1, "desc"]],
responsive: true,
paging: false,
searching: false,
createdRow: function (row, data, rowIndex) {
$.each($('td', row), function (colIndex) {
if (colIndex === 1) {
$(this).attr('data-order', data.won_percent);
}
});
}
});
});
Как я могу получить мой стол для сортировки по значению d.won_percent
?
Обратите внимание, что я также создаю отзывчивую таблицу, а это значит, что мне нужно быть осторожным при использовании событий рендеринга.
JSFiddle здесь: http://jsfiddle.net/07nk5wob/5/
На самом деле я боюсь, что он работает неправильно. См. Здесь с обновленными номерами: http://jsfiddle.net/07nk5wob/34/ – Richard
@ Рихард, я исправил свой код. По-видимому, DataTables не выполняет определение типа при использовании ортогональных данных, поэтому его необходимо явно указывать с помощью ' type: "num". –
Отлично, спасибо за обновление. – Richard