jquery - 日期时间插件不在数据表中排序
问题描述
我无法为我的网站获得终极插件 ( https://datatables.net/blog/2014-12-18 )。我有一个日期时间列。来自 JSON 的列(称为 eisodos)的输入是dd/MM/yyyy HH:mm:ss
(例如31/10/2018 10:03:00
)
SQL Server 中的字段是日期时间。在query.php
中,我将其格式化dd/MM/yyyy HH:mm:ss
并编码为 JSON。
如果我将它格式化为yyyy/MM/dd HH:mm:ss
它在 Datatable 插件中的排序很好,但我希望它显示为dd/MM/yyyy HH:mm:ss
.
我已经包含了两个脚本(最新版本):
<script src="bower_components/moment/min/moment.min.js"></script>
和
<script src="bower_components/moment/min/datetime-moment.js"></script>
我已经检查了一切。
我排序时得到的结果是这样的:
我已经搜索了两天,但找不到解决方案。
这是我的代码:
$(function ()
{
$.fn.dataTable.moment('dd/MM/yyyy HH:mm:ss');
var table = $('#example').DataTable(
{
ajax: {url: "query.php", dataType: "json", dataSrc: ''},
"columns": [
{"data": "eisodos"}
// I have also tried the following (column render) but nothing changed.
// "render": function(data, type, full) {return moment(data).format('dd/MM/yyyy HH:mm:ss');}
],
"language": {"url": "Greek.json"}
});
});
解决方案
在您的情况下,您将不得不使用该列type
的render
方法的参数。如需进一步了解此内容,请参阅Columns Render。基本上,此参数允许您为不同类型的操作(排序、显示等)格式化列数据。在您的情况下,您将需要执行以下操作:
$(function ()
{
$.fn.dataTable.moment('dd/MM/yyyy HH:mm:ss');
var table = $('#example').DataTable(
{
ajax: {url: "query.php", dataType: "json", dataSrc: ''},
"columns": [
{
"data": "eisodos",
"render": function(data, type, full)
{
if (type == 'display')
return moment(data).format('dd/MM/yyyy HH:mm:ss');
else
return moment(data).format('yyyy/MM/dd HH:mm:ss');
}
}],
"language": {"url": "Greek.json"}
});
});
在前面的代码中,当操作用于显示时,日期将被格式化为西班牙方式,而对于其他操作(如排序),将使用英文格式。对于类似的问题,您也可以参考我之前做出的这个答案:
推荐阅读
- javascript - 当检查一定数量时,如何正确使用jQuery以Django表格禁用复选框
- python - 如何编写上传大于 RAM 的文件的 Python 代码?
- reactjs - 无法通过 CDN 识别 FullCalendar 插件
- c# - EF Core 使用 Oracle ROWID 作为主键
- c# - C#:检查当前用户是否断开连接
- reactjs - 使用打字稿,反应和开玩笑设置一个新项目,我遇到了 SyntaxError: Unexpected token '<'
- php - 如何将连接表中的数据显示到codeigniter中的视图?
- python - 主要功能未在 Pydev Eclipse 中执行
- html - 在 chrome 检查中看不到在移动视图中所做的编辑
- amazon-web-services - vscode AWS 工具包:上传到 S3 时如何设置 ACL 选项?