如何解决如何对仅在数据表中具有数字的列进行排序?
排序仅在具有整数值的列中不起作用。它按数字比较数字。一个解决方案将不胜感激。定义列数字不起作用。是否需要更改其他内容?为了清楚起见,我在表中添加了一些值。
Attachedimage is of descending order
HTML:
$(document).ready(function() {
$('#tblLocks').dataTable();
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/css/jquery.dataTables.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/js/jquery.dataTables.min.js"></script>
<table class="table display table-condensed table-striped table-hover locations-table" id="tblLocks">
<thead>
<tr>
<th class="">Serial Number</th>
<th class="name">Customer Name)</th>
<th class="">Customer Code)</th>
<th class="">Manufacture Date)</th>
</tr>
</thead>
<tbody>
<tr>
<td>68</td>
<td>A</td>
<td>29944</td>
<td></td>
</tr>
<tr>
<td>98</td>
<td></td>
<td>28631003</td>
<td></td>
</tr>
<tr>
<td>88</td>
<td>Z</td>
<td>28631001</td>
<td></td>
</tr>
<tr>
<td>88</td>
<td>Z</td>
<td>28631068</td>
<td></td>
</tr>
<tr>
<td>56</td>
<td>H</td>
<td>2865</td>
<td></td>
</tr>
<tr>
<td>88</td>
<td>Z</td>
<td>28631034</td>
<td></td>
</tr>
<tr>
<td>88</td>
<td>Z</td>
<td>28631056</td>
<td></td>
</tr>
<tr>
<td>56</td>
<td>H</td>
<td>286</td>
<td></td>
</tr>
<tr>
<td>56</td>
<td>H</td>
<td>28</td>
<td></td>
</tr>
<tr>
<td>56</td>
<td>H</td>
<td>2811</td>
<td></td>
</tr>
</tbody>
</table>
JS:
var table = $('#tblLocks').DataTable({
responsive: true,autoWidth: false,serverSide: true,processing: true,},ajax:{
url: "@Url.Action("LoadLocks","Locks")",type: "POST",dataType: "json",dataSrc: function (json) {
return json.data["LockCommonViewModels"];
}
},columns: [
{ data: "SerialNumber",name: "SerialNumber",autoWidth: true },{ data: "CustomerName",name: "CustomerName",{ data: "CustomerCode",name: "CustomerCode",{ data: "ManufactureDate",name: "ManufactureDate",],order: [[3,"desc"]]
});
解决方法
如注释中所建议的那样,排序就像列type
是字符串一样。但是有一个设置(https://datatables.net/reference/option/columns.type)可以覆盖默认解释,您可以在其中告诉它每一列中的数据类型(默认解释为空)。
您可以在下面的示例中在第3列和第4列上看到不同的排序变化,具体取决于它是以字符串还是数字形式读取数据。如果在CustomerCode (num)
列上进行排序,则按照您的建议工作,但如果在CustomerCode (string)
列上进行排序,则如示例所示进行排序。
我建议为CustomerCode
列显式设置此值,并且排序应按预期进行。
$(document).ready(function() {
$('#tblLocks').dataTable({
order: [
[2,"desc"]
],"columns": [
null,null,{
"type": "string"
},{
"type": "num"
},null
]
});
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/css/jquery.dataTables.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/js/jquery.dataTables.min.js"></script>
<table class="table display table-condensed table-striped table-hover locations-table" id="tblLocks">
<thead>
<tr>
<th class="">Serial Number</th>
<th class="name">Customer Name</th>
<th class="">Customer Code (string)</th>
<th class="">Customer Code (num)</th>
<th class="">Manufacture Date</th>
</tr>
</thead>
<tbody>
<tr>
<td>68</td>
<td>A</td>
<td>29944</td>
<td>29944</td>
<td></td>
</tr>
<tr>
<td>98</td>
<td></td>
<td>28631003</td>
<td>28631003</td>
<td></td>
</tr>
<tr>
<td>88</td>
<td>Z</td>
<td>28631001</td>
<td>28631001</td>
<td></td>
</tr>
<tr>
<td>88</td>
<td>Z</td>
<td>28631068</td>
<td>28631068</td>
<td></td>
</tr>
<tr>
<td>56</td>
<td>H</td>
<td>2865</td>
<td>2865</td>
<td></td>
</tr>
<tr>
<td>88</td>
<td>Z</td>
<td>28631034</td>
<td>28631034</td>
<td></td>
</tr>
<tr>
<td>88</td>
<td>Z</td>
<td>28631056</td>
<td>28631056</td>
<td></td>
</tr>
<tr>
<td>56</td>
<td>H</td>
<td>286</td>
<td>286</td>
<td></td>
</tr>
<tr>
<td>56</td>
<td>H</td>
<td>28</td>
<td>28</td>
<td></td>
</tr>
<tr>
<td>56</td>
<td>H</td>
<td>2811</td>
<td>2811</td>
<td></td>
</tr>
</tbody>
</table>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。