在数据表中初始化(初始化完成)后禁用排序列

Posted

技术标签:

【中文标题】在数据表中初始化(初始化完成)后禁用排序列【英文标题】:Disable Ordering Columns after initialization (init complete) in datatables 【发布时间】:2015-02-17 02:29:45 【问题描述】:

绘制数据表后,我将禁用用户订购的可能性。 我有一个数据表,我会订购数据并消除用户手动订购数据的可能性。 我该怎么做?

我使用了以下代码:

table = $('#tbl-1').DataTable(
            "info": false,
            "searching": true,
            "paging": false,
            "iDisplayLength": 25,
            "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "Tutti"]],
            "language": "url": "include/it_IT.txt",
            "order": [[1,"desc"]],              
            //"ordering": false,
            //"orderFixed": "pre": [ 1, "desc" ],                             
             "fnInitComplete": function(oSettings, json) 
                    //alert( 'DataTables has finished its initialisation.' );
                    this.fnFilter("<?php echo $_POST['search'];?>");                        
                  ,
            ).on('init.dt', function (e, settings, data) 
                wrappa(); //after custom function
            );

【问题讨论】:

http://www.datatables.net/forums/discussion/7377/disable-all-sorting-after-init 我只是看到它,但在我的网站上不起作用 解决一些潜在的混淆。如果您希望在数据表初始化后禁用(例如服务器端排序的)表的自动排序,但保持启用排序功能以供有意使用,see here。如果您想完全禁用排序,请参阅下面的答案。 【参考方案1】:

旧帖子,但仍未由 dt api 处理。如果要暂时禁用排序,则删除事件将不起作用。而是使用 jquery 在每个 th 上添加和删除一个类,并在此类中指定“pointer-events: none”。

【讨论】:

【参考方案2】:

由于API没有办法做到这一点,我建议以下方法

首先声明你的表

var table = $('#myTable').DataTable();

重新初始化您的数据表以禁用排序

//Destroy your table before
table.destroy();
$('#myTable').dataTable( 
  "ordering": false
 );

参考: https://datatables.net/reference/option/ordering

【讨论】:

这是不正确的,因为我需要第一次订购,并且只有在订购后我必须禁用.. 如果你在 OP 想要阻止用户排序的列上设置ordering : false,他也会失去自己的排序,例如"order": [[1,"desc"]] 这将完全禁用排序

以上是关于在数据表中初始化(初始化完成)后禁用排序列的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 Angular 数据表中数据的初始排序?

在jquery数据表jquery中禁用排序

AG-Grid - 显示排序图标而不重新加载数据

禁用列排序不适用于多个 angularjs 数据表

无法使用数据表停止初始排序

如何在 jQuery.DataTables init 上禁用排序?