如何禁用一列上的过滤并将其保留在jQuery Datatable中的其他列?

时间:2013-02-14 16:27:34

标签: jquery filter datatables

我是jQuery的新手,我需要知道是否有任何方法可以禁用我的jQuery数据表中的一个列的过滤? 我的数据表有5列,我需要禁用最后一列的过滤。

5 个答案:

答案 0 :(得分:21)

Use the bSearchable flag。来自文档:

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


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

答案 1 :(得分:2)

 var mSortingString = [];
var disableSortingColumn = 4; 
mSortingString.push({ "bSortable": false, "aTargets": [disableSortingColumn] });



    $(document).ready(function () {
        var table = $('#table').dataTable({
            "paging": false,
            "ordering": true,
            "info": false,
            "aaSorting": [],
            "orderMulti": true,
            "aoColumnDefs": mSortingString

        });
     });

我花了很多时间试图解决这个应该是一个简单的任务,所以对于任何人仍然只是添加前3行并引用你要禁用的列,我的第5列。

答案 2 :(得分:2)

你也可以这样做:

    $('#ProductsTable').dataTable({
        "lengthMenu": [[20, 50, -1], [20, 50, "All"]],
        "pageLength": 20,
        "columnDefs": [
          { "orderable": false, "targets": [-1, 1] },
          { "searchable": false, "targets": [-1, 1] }
        ]
    });

答案 3 :(得分:2)

以下是使用Datatable ColumnDef禁用多列上的全局搜索过滤的方法。

var datatable = $('#datatable').DataTable({
    "deferRender": true,

    "columnDefs": [ 
        { targets: 0, searchable: true },
        { targets: [1,2], searchable: true },
        { targets: '_all', searchable: false }
    ]
});

这将启用对第0,1和0列的搜索。 2索引明智并禁用其余所有。规则从上到下优先适用。

答案 4 :(得分:1)

这也有效。只需将数字4更改为所需的列号:

    var table = $('#mytable').DataTable(
        {
            initComplete: function () {
                this.api().columns().every(function () {
                    var column = this;
                    if (column[0][0] == 4) {
                        console.log(column);
                        $(column.footer()).html('');
                    }
                });
            },
        }
    );