如何在特定的DataTable列中禁用搜索?

时间:2016-02-09 15:57:03

标签: javascript jquery datatable

我正在成功使用此代码

function refreshDataTable() {
        // The table is made sortable
        $('#order_proposal_table').DataTable({
            'destroy'           : true,     // see http://datatables.net/manual/tech-notes/3#destroy - 2nd example
            'paging'            : false,
            'scrollCollapse'    : true,
            'scrollY'           : '65vh',
            'fixedHeader'       : true,
            'dom'               : 'rt',
        }); 
    }

然后我尝试在9列中的2列中启用搜索。

所以我改变了

'dom'               : 'rt',

'dom'               : 'frt',

显示查找输入框。这可行,但它会搜索每一列,但我只需搜索到两列。

所以我正在尝试有选择地关注此official guide to disable filtering,并添加columns定义

结果代码:

function refreshDataTable() {
        // The table is made sortable
        $('#order_proposal_table').DataTable({
            'destroy'           : true,     // see http://datatables.net/manual/tech-notes/3#destroy - 2nd example
            'paging'            : false,
            'scrollCollapse'    : true,
            'scrollY'           : '65vh',
            'fixedHeader'       : true,
            'dom'               : 'frt',
            'columns'           : [         // see https://datatables.net/reference/option/columns.searchable
                { 'searchable': false },
                { 'searchable': false },
                null,   // product code 
                null,   // description 
                { 'searchable': false }
            ]
        }); 
    }

问题是我从数据表javascript中发现了javscript错误

  

TypeError:col未定义

删除columns代码有效。

我做错了什么?

4 个答案:

答案 0 :(得分:9)

我使用columnsDef选项解决了。

以下代码禁用了对指定列的搜索。正是我想要的。

'columnDefs'        : [         // see https://datatables.net/reference/option/columns.searchable
                { 
                    'searchable'    : false, 
                    'targets'       : [0,1,4,5,6,7,8,9] 
                },
            ]

答案 1 :(得分:2)

您是否尝试过为其余4列传递null而不是仅指定前5列?所以:

'columns': [
            { 'searchable': false },
            { 'searchable': false },
            null,   
            null,
            { 'searchable': false },
            null,   
            null,   
            null,   
            null
        ]

我会将此作为评论发布,但我无法包含该示例。

答案 2 :(得分:0)

请记住,“搜索”的默认设置为true,因此要打开搜索某些列并为其他列关闭它,则需要执行以下两个选项中的一个或另一个:

1)保留默认设置,并关闭可搜索的特定列:

"columnDefs": [
    { "searchable": false, "targets": 0,3,5 }
]

或 2)关闭默认值,然后将其用于特定列

"searching": false,
"columnDefs": [{
    "searchable": true, "targets": 1,2,4,6
}],

使用“ searchabe”:如果默认的“搜索”仍设置为true,则特定列的true不会关闭未提及的列。

答案 3 :(得分:0)

我使用SortHierarchy bSearchable

从搜索中排除了第二列
false

希望您发现此代码有帮助。