有没有办法为包含非文本数据的列创建自定义排序?
这是一张快照:
我想按图标符号排序。
P.S。这两个图标都使用ng-if
和数据集中的布尔值显示。
编辑:我使用Angular方式显示数据。
<table datatable="ng" dt-options="dtOptionsLoginHistory" dt-column-defs="dtColumnDefsLoginHistory"
class="table table-striped row-border hover"
width="100%">
<thead>
<tr>
<th>Success</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="entry in entries">
<td style="width: 10%;">
<i ng-if="!entry.failed" class="fa fa-check" style="color: green;"></i>
<i ng-if="entry.failed" class="fa fa-times" style="color: red;"></i>
</td>
</tr>
</tbody>
</table>
答案 0 :(得分:2)
有几种不同的方法可以达到你想要的效果。考虑到您的设置,我认为最简单的方法是创建一个特殊的orderType
,根据fa-*
要素呈现的<i>
类返回一个值:
$.fn.dataTable.ext.order['fa-classes'] = function(settings, col) {
return this.api().column( col, {order:'index'} ).nodes().map(function(td, i) {
return $('i', td).hasClass('fa-check') ? '1' : '0';
})
}
将提供所有<i class="fa fa-check">
订单1
,其他任何0
。这也可能是switch { .. }
返回多个不同的订单值。像这样使用它:
$scope.dtColumnDefsLoginHistory = [
DTColumnDefBuilder.newColumnDef(0).withOption('orderDataType', 'fa-classes')
];
小型演示 - &gt;的 http://plnkr.co/edit/8S5f2MR331CiNBYYfDQf?p=preview 强>
答案 1 :(得分:0)
添加orderBy过滤器:
<tr ng-repeat="entry in entries orderBy : 'failed' ">
<td style="width: 10%;">
<i ng-if="!entry.failed" class="fa fa-check" style="color: green;"></i>
<i ng-if="entry.failed" class="fa fa-times" style="color: red;"></i>
</td>
</tr>