Я не могу понять это, чтобы правильно отсортировать столбцы даты. Я использовал это в качестве ссылки https://datatables.net/blog/2014-12-18. Я использую asp. net с мастер-страницами.
Я включаю в следующем порядке:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
<script type="text/javascript" src="<%=ResolveUrl("~/Assets/js/plugins/jquery.dataTables.min.js")%>"></script>
<script type="text/javascript" src="https://cdn.datatables.net/plug-ins/1.10.20/sorting/datetime-moment.js"></script>
На главной странице у меня есть функция, которую я передаю в идентификаторе таблицы и столбцах, которые я хочу печатать для форматирования таблицы данных на странице содержимого, которая отлично подходит для создания таблиц данных.
function formatDatatable(id, printableColumns) {
$(id).DataTable({
"pagingType": "full_numbers",
"lengthMenu": [
[10, 25, 50, -1],
[10, 25, 50, "All"]
],
responsive: {
breakpoints: [
{ name: 'desktop', width: Infinity },
{ name: 'tablet', width: 1024 },
{ name: 'fablet', width: 768 },
{ name: 'phone', width: 480 }
]
},
language: {
search: "_INPUT_",
searchPlaceholder: "Search records",
},
dom: 'Bfrtip',
buttons: [
'copy',
{
extend: 'excel',
exportOptions: {
columns: printableColumns
},
},
{
extend: 'pdf',
exportOptions: {
columns: printableColumns
}
},
{
extend: 'print',
exportOptions: {
columns: printableColumns
}
}
]
});
}
Кроме того, на главной странице у меня есть следующий код:
$(document).ready(function () {
console.log(moment('Dec 1 2019 12:00AM', 'MMM d YYYY hh:mma').isValid()); //validates to true
$.fn.dataTable.moment('MMM d YYYY hh:mma');
});
}
И, наконец, последняя функция, которая, на мой взгляд, необходима. Я попытался добавить это в $ (документ) .ready и вне его с тем же результатом. Я добавил несколько журналов, и он будет печатать test1 и test2 при загрузке данных, но он не будет создавать журналы после форматирования таблиц, и я пытаюсь отсортировать столбец.
$.fn.dataTable.moment = function (format, locale) {
console.log("test1");
var types = $.fn.dataTable.ext.type;
// Add type detection
types.detect.unshift(function (d) {
console.log("test2");
return moment(d, format, locale, true).isValid() ?
'moment-' + format :
null;
});
// Add sorting method - use an integer for the sorting
types.order['moment-' + format + '-pre'] = function (d) {
console.log("test3");
return moment(d, format, locale, true).unix();
};
};
Вот некоторые из даты в таблице, которые я пытаюсь отсортировать: De c 1 2019 12:00 AM, 2 января 2020 3:58 AM, 1 января 2023 11:59 PM
Любая помощь с этим будет признательна.