Datatables JS - HTML5如何禁用特定列的排序?

Ale*_*yov 2 javascript datatable jquery html5 datatables

您知道如何使用HTML5初始化表上的某些选项,而不是使用Javascript来完成相同的操作.一种方式比另一方更好是否超出了这个问题的范围.

请参阅HTML 5数据属性设置选项以获取更多信息


此问题的目标是找到如何使用HTML5初始化禁用某些列的答案.

基本的Javascript初始化程序如下所示:

$(document).ready(function() {
$('#example').DataTable();
Run Code Online (Sandbox Code Playgroud)

});


然后,这是如何使用JS使用初始化函数设置页面长度:

  $('#example').dataTable( {
      "pageLength": 50
  } );
Run Code Online (Sandbox Code Playgroud)

好的越来越近了 - 这是一种JS方法来禁用第1列和第3列的排序,例如它 - 在初始化函数中添加这一行:

 $('#example').dataTable( {
      "pageLength": 50,
      "aoColumnDefs": [ { "bSortable": false, "aTargets": [ 1, 3 ] }]
  } );
Run Code Online (Sandbox Code Playgroud)

如果您的表至少有列,那么其中2个列将不可排序.

现在还有一种方法可以使用HTML5属性数据为表设置页面长度(显示顺序...),例如:

<table data-order='[[ 1, "asc" ]]' data-page-length='25'>
<thead>
    <tr>
        <th>Name</th>
        <th>Position</th>
        <th>Office</th>
        <th>Age</th>
        <th>Start date</th>
        <th data-class-name="priority">Salary</th>
    </tr>
</thead>
Run Code Online (Sandbox Code Playgroud)



我的问题是:

如何使第1列和第3列无法使用HTML5 DATA-ATTRIBUTE进行排序?

我已经尝试了我能想象的每一个选项 - 这是我的最后一次尝试

data-columnDefs="[{"bSortable": false, "Targets": [3]}]"
Run Code Online (Sandbox Code Playgroud)


我在这里的事实表明我已经尝试了所有可能使用的资源,包括Datatable JS官方网站,谷歌和我最喜欢的StackOverflow虽然有一些相关的问题,但没有帮助解决这个特定的问题.

和往常一样 - 我感谢你们每一个兄弟姐妹们对这些问题的任何帮助和努力!爱与你在一起与我同在!

Gyr*_*com 6

你非常接近.正确的data-属性如下所示:

<table id="example" class="display" data-column-defs='[{"sortable": false, "targets": [1,3]}]'>
Run Code Online (Sandbox Code Playgroud)

根据手册:

data-*属性用作初始化选项时,需要考虑两个要点:

  • jQuery将自动从虚线字符串转换为DataTables使用的驼峰案例表示法(例如,data-page-length用于pageLength).
  • 如果在属性中使用字符串,则必须使用双引号(因此整个属性在单引号中).由于处理JSON数据数据,这是jQuery的另一个要求.

有关代码和演示,请参阅此jsFiddle.