在dataTables.js jQuery插件中使列不可移植

时间:2011-04-30 06:33:47

标签: jquery jquery-plugins datatables

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

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

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

4 个答案:

答案 0 :(得分:12)

这可以通过将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
        ] } );
} );

答案 1 :(得分:8)

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

答案 2 :(得分:3)

aaSortingFixed

  

此参数基本相同   到aaSorting参数,但不能   被用户交互覆盖   桌子。这意味着你   可以有一个列(可见或   隐藏)排序将永远   先被迫 - 任何排序后   那(来自用户)将是   按要求执行。这可以   用于将行分组在一起。

使用示例:

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

0是您的“不合格”行的编号(左起)。 (因此在该示例中,第一列和第六列是固定的)

Official Documentation

答案 3 :(得分:0)

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

$('#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])
            });
        }
    });