datatables - 数据表中列的二级排序
问题描述
正如您从下面的屏幕截图中看到的那样,我有一个数据表,其中显示了两个相关但完全不同的数据位,即平均分数和评分数:
当按此列排序时,如果我可以先按平均得分(数字)排序,然后按评分数排序(数字),但也将它们显示在单个列中,那将是首选。
我在考虑如何修改 data-order 属性的值来操作一个东西,但我想不出任何解决方案。
其他人解决了这个问题。
数据单元格如下所示:
<td class="text-center sorting_1" data-search="-1" data-order="5.00">
<div class="mb-2">
<span class="badge badge-success">
5.00
</span>
</div>
<small class="text-muted">
10 ratings
</small>
</td>
解决方案
您可以为您感兴趣的列定义自定义排序功能。
片段:
$('#example').DataTable({
"aoColumns": [{
"bSortable": true}, {"bSortable": true}, {"sType": "customAvgScoreSort", "bSortable": true}]
});
// custom sorting.......
jQuery.fn.dataTableExt.oSort["customAvgScoreSort-desc"] = function (x, y) {
return parseFloat($(y).find('span').text()) - parseFloat($(x).find('span').text()) || parseInt($(y).siblings('small').text()) - parseInt($(x).siblings('small').text());
};
jQuery.fn.dataTableExt.oSort["customAvgScoreSort-asc"] = function (x, y) {
return parseFloat($(x).find('span').text()) - parseFloat($(y).find('span').text()) || parseInt($(x).siblings('small').text()) - parseInt($(y).siblings('small').text());
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="//cdn.datatables.net/1.10.23/css/jquery.dataTables.min.css">
<script src="//cdn.datatables.net/1.10.23/js/jquery.dataTables.min.js"></script>
<table id="example" class="display" style="width:100%">
<thead>
<tr>
<th>Type</th>
<th>Unique deals</th>
<th>AVG score</th>
</tr>
</thead>
<tbody>
<tr>
<td>Sales development</td>
<td>0</td>
<td>
<div class="mb-2">
<span class="badge badge-success">
5.0
</span>
</div>
<small class="text-muted">
2 ratings
</small>
</td>
</tr>
<tr>
<td>Sales development</td>
<td>0</td>
<td>
<div class="mb-2">
<span class="badge badge-success">
5.0
</span>
</div>
<small class="text-muted">
1 ratings
</small>
</td>
</tr>
<tr>
<td>Sales development</td>
<td>0</td>
<td>
<div class="mb-2">
<span class="badge badge-success">
5.0
</span>
</div>
<small class="text-muted">
10 ratings
</small>
</td>
</tr>
<tr>
<td>Sales development</td>
<td>0</td>
<td>
<div class="mb-2">
<span class="badge badge-success">
5.0
</span>
</div>
<small class="text-muted">
3 ratings
</small>
</td>
</tr>
</tbody>
</table>
推荐阅读
- numpy - 在 x 和 y 值上使用不同大小的数组喂养 pyplot
- sql-server - 如何在 asp.net 核心中工作并将新表添加到数据库第一个模型?
- javascript - 访问 Promise.then() 中的拖放对象?
- python - 每次代码运行时如何保存数据并附加到它
- ios - 将数据从 UIViewController 传递到 UITabBarController 始终为零
- flutter - 是否可以在飞镖中动态设置方法的返回类型
- python - 在 Android Studio 中使用 Chaquopy 将值插入到 python 文件中
- vba - 从抓取的表格中提取单元格值的最有效方法
- c# - 是否可以在 HwndHost 中托管 WPF 页面?
- chart.js - 如何在工具提示回调afterBody中将逗号分隔的字符串分成新行?