我尝试仅在数据表中启用基于一列的排序。但它不起作用。这是我尝试的方式
var myTable = $("#tbl_main").dataTable({
"dom": "<'tableinfobar'i><'tablesearchbox'f><'tablestarfilter'><'tablebody't>S<'tablelength'l><'tablepaging'p>",
"ordering": false,
"columnDefs": [{"targets": [0, 6],"searchable": false}, {"targets":2, "type":"html-num","orderable":true}],
"lengthMenu": [
[10, 20, 50, 100, 500, -1],
[10, 20, 50, 100, 500, "All"]
]
}).show();
在这里,我只需要为第二列启用排序,并在 columnDefs
中尝试答案 0 :(得分:19)
将类no-sort
添加到除要排序的列之外的所有<th>
..请检查https://jsfiddle.net/24zztcL9/
我只为第二列启用排序&#34;位置&#34;
<强> HTML 强>
<table id="example" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th class="no-sort">Name</th>
<th>Position</th>
<th class="no-sort">Office</th>
<th class="no-sort">Age</th>
<th class="no-sort">Start date</th>
<th class="no-sort">Salary</th>
</tr>
</thead>
</table>
<强>的jQuery 强>
$(document).ready(function() {
$('#example').DataTable({
"ordering": true,
columnDefs: [{
orderable: false,
targets: "no-sort"
}]
});
});
答案 1 :(得分:3)
而不是使用columnDefs
我更喜欢使用columns
这样:
$(document).ready(function() {
$('#example').DataTable({
"columns":[
{
"sortable": false
},
{
"sortable": true
},
{
"sortable": false
},
{
"sortable": false
},
{
"sortable": false
},
{
"sortable": false
}
]
});
});
无论哪种方法都有效,我只是更喜欢columns
数组的粒度控制。
答案 2 :(得分:0)
对我来说,“接受的答案”无效
因为在我的表中所有<th>
都具有相同的类,因此我无法向<th>
添加其他类,也无法删除<th>
的默认类,
我的桌子的结构如下:
<table id="example" class="mt-table" cellspacing="0" width="100%">
<thead>
<tr>
<th class="mt-head">Name</th>
<th class="mt-head">Position</th>
<th class="mt-head">Office</th>
<th class="mt-head">Age</th>
<th class="mt-head">Start date</th>
<th class="mt-head">Salary</th>
</tr>
</thead>
<tbody>
<tr>
<td>Hari</td>
<td>Senior Engineer</td>
<td>Ahmedabad</td>
<td>20</td>
<td>11/02/2019</td>
<td>50,000</td>
</tr>
</tbody>
</table>
现在我也只想为Position
列启用排序选项。
我所做的如下:
在我的<script>
$(document).ready(function() {
$('#example').DataTable({
"ordering": true,
columnDefs: [
{
"orderable": true,
"targets": 1,
},
{
orderable: false,
targets: "mt-head"
}]
});
});
现在,只有 Position (位置)列可以订购,而其他列则不能。
因此规则是将要排序的列首先放在columnDefs
中,如上例所示,然后您可以放置类选择器以将其禁用在所有其他列上进行排序。
答案 3 :(得分:0)
$(function () {
$("#dgUsers").prepend($("<thead></thead>").append($("#dgUsers").find("tr:first"))).DataTable({
"aoColumnDefs": [
{ "bSortable": false, "aTargets": [ 4, 5, 6 ] }
] }
);
});
尝试一下...
4、5、6是从0开始的列号。