如何通过单击数据表中的列名来防止排序?

Posted

技术标签:

【中文标题】如何通过单击数据表中的列名来防止排序?【英文标题】:How can I prevent ordering by click on column names in datatables? 【发布时间】:2020-11-02 23:44:55 【问题描述】:

我想防止通过单击列名来更改顺序。

我试过了:

"ordering": false,

这实际上消除了点击的可能性。但是订购不再起作用。我想保留它,只阻止用户点击列名。我尝试了以下所有方法:

$(".sorting").addClass('sorting_disabled').removeClass('sorting');

$(".sorting").click(function()return false;);

  $( ".sorting" ).click(function( event ) 
  event.preventDefault();
);

没有任何效果。

【问题讨论】:

【参考方案1】:

您可以使用以下内容:

$(document).ready(function() 

    var table = $('#example').DataTable( 
        "initComplete": function(settings, json) 
            $('th.sorting').off();
            $("th.sorting").css('cursor', 'default');
            $("th.sorting_asc").css('cursor', 'default');
            $("th.sorting_desc").css('cursor', 'default');
        
     );

    // to show sorting is still possible:
    table.order.listener( '#mysorter', 0 );

 );

这会从表格的列标题中删除排序事件(jQuery off() 函数),并确保鼠标图标在您滚动标题时不会变为手形。

它将箭头留在原处,因此您可以看到有效的排序。

为了显示排序仍然是可能的,我在页面上添加了一个按钮:

<button id="mysorter" type="button">Click Me!</button>

table.order.listener() 使列索引 0 在每次单击按钮时按 asc/desc 排序。

(如果您还想去掉排序箭头,请参阅here。)

【讨论】:

以上是关于如何通过单击数据表中的列名来防止排序?的主要内容,如果未能解决你的问题,请参考以下文章

[R] 如何防止read.table读入数据时列名前自动加上"X."?

如何将列名排序到 Pandas Dataframe(分类数据)中的 bin 中

数据表 - 如何防止排序列改变颜色

如何将命名向量作为行添加到数据框中,根据列名顺序重新排序?

按多列对数据视图中的结果集进行排序

如何防止用户单击按钮两次?