2014-10-20 130 views
2

我正在使用DataTables显示一些包含日期列的MySQL数据。在jQuery DataTables中按DD/MM/YYY排序日期列1.10.2

我表格中的所有日期数据都以DD/MM/YYYY格式显示,无论我尝试了多少不同的事情,我都无法用除前两个数字之外的任何其他方式对它进行排序。

我目前使用排序的这种方法,我觉得很适合我的最佳数据:

http://datatables.net/plug-ins/sorting/date-uk

"columns": [ 
     { "data": "Address" }, 
     { "data": "Date_seen", "type" : "date-uk" }, 

我也尝试过使用这种方法,更像是在数据表的例子排序网站:

"columnDefs": [ 
     { "type": "date-uk", "targets": 1 } 
    ], 

我试图复制在插件代码,以我的JavaScript文件,并且还试图通过数据表引用插件CDN。

我意识到有很多类似的问题,但它们似乎都与几年前旧版本的DataTables有关,并且包含使用较早的初始化,如sType,aaSortingaoColumns

我希望有人可以阐明为什么这不起作用,这让我发疯!

+1

不知道为什么,在链接显示的代码是不是为你工作。在jsfiddle.net中创建一个包含您的尝试的演示。可以将CDN资源用于插件和CSS代码。 – charlietfl 2014-10-20 15:39:20

+1

@charlietfl感谢您的回复。我担心我无法将自己的尝试放入jsfiddle中,因为我正在处理包含敏感病人信息的医疗保健系统,而且在我测试时,MySQL数据库仅在我的机器上本地托管。查看更多我的JavaScript文件会有帮助吗?只是为了测试更小规模的日期排序,我做了一个组成信息的jsfiddle,它运行时没有问题... http://jsfiddle.net/mikethirteen/k9rm3qL6/3/ – mikethirteen 2014-10-21 09:20:17

回答

4

尽管我还没有发现为什么使用上面的插件不适合我,我已经实现了一个解决方法,在我的情况下可以解决这个问题。

DataTables在默认情况下使用YYYY-MM-DD处理日期,所以我创建了第二个日期列,其中数据以这种方式进行格式化。我还使用JavaScript函数在原始格式更改时更新此格式的列。

在原始列上使用DataTables选项iDataSort,并使用bVisible隐藏此新的“默认日期”列,现在显示我的原始列,但使用隐藏的“默认日期”列进行排序。以下是我如何初始化此解决方法的示例。

"columns": [ 
     { "data": "Name_of_Patient", "width" : "10%" }, 
     { "data": "Address" }, 
     { "data": "Hospital_Number" }, 
     { "data": "PCT" }, 
     { "data": "Date_of_Pres", "iDataSort" : 5 }, 
     { "data": "Date_of_Pres_Sort", "bVisible" : false } 
], 
+0

这是一个非常有用的工作,我谢谢你! – 2014-10-28 16:38:37

+0

@mikethirteen,我与你有同样的问题,但是,区别在于我是1)使用服务器端处理和2)我的日期值是格式化的服务器端。我试着使用你的解决方案,但它不适合我,所以我只想知道你是否使用服务器端处理和服务器端格式化值? – Janpan 2015-11-04 09:24:03