在 dataTables.js jQuery 插件中使列不可排序

Posted

技术标签:

【中文标题】在 dataTables.js jQuery 插件中使列不可排序【英文标题】:make columns unsortable in dataTables.js jQuery plugin 【发布时间】:2011-08-15 22:51:13 【问题描述】:

我正在使用 dataTables.js jQuery 插件。

我的表格的第一列是一个行计数器,所以我不希望它可以被用户排序。最后一列包含用户可以在一行上执行的一些操作链接。如何使这两列无法排序?

注意:我正在使用数据表的管道(服务器端进程)模式。

【问题讨论】:

这个问题你解决了吗?如果是,你能提供正确的答案吗? 【参考方案1】:

这是通过将 bSortable 设置为 false 来完成的:

/* Using aoColumnDefs */
$(document).ready(function() 
    $('#example').dataTable( 
        "aoColumnDefs": [ 
             "bSortable": false, "aTargets": [ 0 ] 
        ]  );
 );

/* Using aoColumns */
$(document).ready(function() 
    $('#example').dataTable( 
        "aoColumns": [ 
             "bSortable": false ,
            null,
            null,
            null,
            null
        ]  );
 );

【讨论】:

【参考方案2】:

DataTables 1.10+ 还包括supports html5 data- style attributes,包括data-sortable="false",这使得该列不符合排序条件:

<table>
    <thead>
        <tr>
            <th data-sortable="false">Row</th>
            <th>Name</th>
            <th>Join Date</th>
            <th>Organization</th>
            <th data-sortable="false">Options</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            [etc]
        </tr>
    </tbody>
</table>

See this demo in jsFiddle

【讨论】:

【参考方案3】:

aaSortingFixed

这个参数基本一致 到 aaSorting 参数,但不能 被用户交互覆盖 桌子。这意味着你 可以有一个列(可见或 隐藏),排序将始终 首先强制 - 之后的任何排序 然后(来自用户)将是 按要求执行。这可以是 用于将行分组在一起。

使用示例:

$(document).ready( function() 
    $('#example').dataTable( 
         "aaSortingFixed": [[0,'asc'],[5,'asc']]
     );
 );

0 是“不可排序”行的编号(从左至右)。 (所以在那个例子中,第一列和第六列是固定的)

Official Documentation

【讨论】:

【参考方案4】:

您可以在单独的列中定义一个回调函数以支持不可更改的数字顺序:

$('#someId').dataTable(
        // ...
        "aoColumns": [
            // ...
            "bSortable": false, // set unsortable this column
            // ...
        ],
        fnDrawCallback: function(oSettings) 
            $(this).find('tbody tr').each(function(index) 
                $(this).find('td').eq(1).text(index + 1); // .eq([index of column])
            );
        
    );

【讨论】:

以上是关于在 dataTables.js jQuery 插件中使列不可排序的主要内容,如果未能解决你的问题,请参考以下文章

表格插件之一datatables

[尝试运行或启动dataTables.js时收到TypeError

尝试运行或启动 dataTables.js 时收到 TypeError

教你巧用jQuery插件在后端开发中体验到飞

dataTables JS插件响应宽度溢出设置div宽度

DataTables - 排序,搜索,分页不起作用