У меня есть DataTable, для которого я генерирую динамические c заголовки перед его инициализацией. Это означает, что я не могу предсказать типы данных столбца, поэтому я полагаюсь на DataTables, определяющие тип столбца на основе данных, чтобы заставить сортировку работать.
Некоторые возвращаемые столбцы имеют данные о валюте (Примерный формат: $ 234 392,01). Иногда данные заключаются в круглые скобки для представления отрицательного значения: (234 392,01 долл. США). Из-за круглых скобок DataTables идентифицирует этот столбец как строку и неправильно сортирует его.
Я пытался использовать плагин для отрицательных скобок , но на самом деле он ничего не делал. Тем не менее, я не делаю ничего дополнительного, кроме вставки плагина в мой код.
Нужно ли мне что-то дополнительно использовать, чтобы использовать скобки-отрицательный плагин? Если это ограничение вызвано динамическими c столбцами, есть ли другой способ решить эту проблему?
И просто для ясности, если в столбце нет скобок, DataTables правильно сортирует данные валюты .
Тестовый случай, когда плагин не работает (не уверен, почему форматирование кода так ужасно):
$(document).ready(function() {
var columns = [
{ "data": "Column5", "title": "Column5" },
];
var data = [
{"Column5":"($371.17)"},{"Column5":"$94,170.30"},{"Column5":"$868,588.32"},
{"Column5":"$81,874.09"},{"Column5":"$89.99"},{"Column5":"$2,800,594.59"},
{"Column5":null},{"Column5":null},{"Column5":null},{"Column5":null},
{"Column5":null},{"Column5":null},{"Column5":null},{"Column5":null},
{"Column5":null}
];
$('#example').dataTable( {
"columns": columns,
"data": data
} );
} );
body {
font: 90%/1.45em "Helvetica Neue", HelveticaNeue, Verdana, Arial, Helvetica, sans-serif;
margin: 0;
padding: 0;
color: #333;
background-color: #fff;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<link href="//datatables.net/download/build/nightly/jquery.dataTables.css" rel="stylesheet" type="text/css" />
<link href="https://nightly.datatables.net/css/jquery.dataTables.css" rel="stylesheet" type="text/css" />
<script src="https://nightly.datatables.net/js/jquery.dataTables.js"></script>
<script src="https://cdn.datatables.net/plug-ins/1.10.20/sorting/brackets-negative.js"></script>
<meta charset=utf-8 />
<title>DataTables - JS Bin</title>
</head>
<body>
<div class="container">
<table id="example" class="display" width="100%">
</table>
</div>
</body>
</html>
Я заметил, что если удаляются нулевые записи, это работает, но мне нужно, чтобы оно работало с пустыми значениями. Кроме того, если нулевые значения сохраняются и скобки удаляются, это также работает.