2015-07-21 147 views
4

我正在使用jQuery DataTables插件。排序工作正常,但是有没有办法让一个列保持总是相同的,不管应用什么排序?DataTable排序:使一列保持固定

例如,第一列只是简单的订单号:1,2,3,4,5 ... 当我按日期或其他排序时,第一列保持相同的顺序:1 ,2,3 ..?

有没有办法做到这一点?所以,我并不是想通过第一列来禁用排序,但是当排序被另一列应用时,第一列保持不变。

回答

-1

您的HTML代码看起来像这样。向要禁用排序的列中添加一个类。

<table class="table table-bordered" id="example" > 
<thead> 
<tr id="tbl_header1"> 
    <th class="no-sort" name="prop_ref_no" style="min-width:80px">PropRef</th> 
    <th class="no-sort" name="title" style="min-width:80px">title</th> 
    <th name="publish_status" style="min-width:80px">Publish status</th> 
    <th name="Bedrooms" style="min-width:200px">Bedrooms</th> 
</tr> 
</thead> 

然后这个添加您的dataTable选项。

$('#example').dataTable({ 
    "columnDefs": [ { 
     "targets": 'no-sort', 
     "orderable": false, 
} ]}); 

SRC:https://datatables.net/forums/discussion/21164/disable-sorting-of-one-column

+1

感谢您的回答。然而,这正是我不想做的,我认为每个人都会建议,所以我在我的信息中明确表示: “所以,我并不想禁用按第一列排序,而是先将第一列当其他列应用排序时,列保持不变。“ – kasijus

+0

@kasijus您是否已经有解决方案? –

1

你可以通过使用orderFixed选项定义排序,将始终应用到表。

例如,要始终按升序第一列进行排序:

$('#example').dataTable({ 
    "orderFixed": [ 0, 'asc' ] 
}); 
0

碰到这个问题,同时寻找一个同样的问题的解决方案。 这是一个包含在docs中的解决方案。

$(document).ready(function() { 
var t = $('#example').DataTable({ 
    "columnDefs": [ { 
     "searchable": false, 
     "orderable": false, 
     "targets": 0 
    } ], 
    "order": [[ 1, 'asc' ]] 
}); 

t.on('order.dt search.dt', function() { 
    t.column(0, {search:'applied', order:'applied'}).nodes().each(function (cell, i) { 
     cell.innerHTML = i+1; 
    }); 
}).draw(); 

});

基本上索引列被重新编号,只要启动ordersearch事件。 searchableorderable设置为false,因为它们对索引列没有影响(它仍然会被重新编号)。