我有一个表包含"日期(格式M/d,如' 8月23日')"和字符串(如'过程'和'完成')在同一列。但问题是它是按字母顺序排序的,而不是根据日期排序的。我的文件结构是:
<script type="text/javascript" language="javascript" src="../../table-sorting/js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="../../table-sorting/js/jquery.dataTables.js"></script>
<script type="text/javascript" language="javascript" class="init">
$(document).ready(function() {
$('#sorting').dataTable( {
"dom": '<"top"iflp<"clear">>rt<"bottom"iflp<"clear">>'
} );
} );
</script>
CPA航运
123年8月28
327年7月30日流程
789
如果我对shipping列进行排序那么它会给出像
这样的结果流程8月28
7月30日
但是我想要的结果是:
流程7月30日
8月28
表示先对字符串排序,再对日期排序
这些shipping值来自Mysql数据库
如何解决这个问题??任何建议吗? ?
您必须以YYYYmmdd
格式书写日期,以便字母顺序与时间顺序相匹配。
但是您希望您的日期以更好看的格式(合法的)显示。
解决方案是有2列:一列是好看的日期,一列是YYYYmmdd
日期。这个将被隐藏,但将被dataTable
排序函数使用。
<table id="sorting">
<thead>
<tr>
<th>CPA</th>
<th>Shipping</th>
<th>Shipping (sorting format)</th>
</tr>
</thead>
<tbody>
<tr>
<td>123</td>
<td>Aug 28</td>
<td>20150828</td>
</tr>
<tr>
<td>327</td>
<td>July 30</td>
<td>20150730</td>
</tr>
<tr>
<td>789</td>
<td>Process</td>
<td>0</td>
</tr>
</tbody>
</table>
然后,Javascript:
$('#sorting').dataTable( {
"aoColumns": [
{"bSortable": true}, // First column: normal
{"iDataSort": 2}, // Second column's sorting depends on third column (dataTable starts counting from 0, that's why third column is number 2)
{"bVisible": false}, // Third column: hide it
]
});
您可以在DataTables的文档中找到更多技巧和示例。