【问题标题】:How to disable column toggle for particular column of Datatable when it is hidden?隐藏时如何禁用Datatable特定列的列切换?
【发布时间】:2016-11-28 10:47:06
【问题描述】:

我正在为我的项目使用 Datatable 插件。我启用了 colvis 功能来帮助表格导出。现在我想使用以下脚本为用户隐藏几列:

 columnDefs : [
  { targets: 1, visible: (department == '6')||(department == '0'),
   "searchable": false,className:'none' }
]

它可以正常工作,就像列被隐藏并且也无法搜索一样。但由于我启用了 colvis ,列名在列表中可见,当用户选择隐藏列时,它将显示出来。任何人都可以建议我如何禁用列切换吗?

还尝试指定列以排除 colvis 但没有用。

columnDefs : [
  { targets: 1, visible: (department == '6')||(department == '0'),
   "searchable": false,className:'never', responsive: false ,colVis: {
    exclude: [ 1 ]
}},

],

下面是我完整的数据表脚本。

 $('#page_effect').fadeIn(2000);
                var table = $('#testTable').DataTable({
                    mark: true,
                    responsive: true,
                   "dom": 'flit',
                    columns: [
                        {className: "group1"},
                        {className: "group2"},
                        {className: "group1"},
                        {className: "group2"},
                        {className: "group2"},
                        {className: "group2"},
                        {className: "group2"},
                        {className: "group2"},
                        {className: "group2"},
                        {className: "group2"},
                        {className: "group2"},
                        {className: "group2"},
                        {className: "group2"},
                        {className: "group2"},
                        {className: "group2"},
                        {className: "group2"},
                        {className: "group2"},
                        {className: "group2"},
                    ],
                    dom: 'Bfrtip',
                    buttons: [{
                            extend: 'collection',
                            text: "More options",
                            buttons: [
                                'pageLength',
                                {
                                    extend: 'copyHtml5',
                                    exportOptions: {
                                        columns:  ':visible'
                                    }
                                },
                                {
                                    extend: 'excelHtml5',
                                    title: 'Book',
                                    exportOptions: {
                                        columns: ':visible'
                                    }
                                },
                                {
                                    extend: 'pdfHtml5',
                                    title: 'Book',
                                    exportOptions: {
                                        columns: ':visible'
                                    }
                                },
                                {
                                    extend: 'print',
                                    title: 'Book',
                                    exportOptions: {
                                        columns: ':visible'
                                    }
                                },
                                {
                                    extend: 'excel',
                                    title: 'Book',
                                    text: 'Export selected',
                                    exportOptions: {
                                        columns: ':visible',
                                        modifier: {
                                            selected: true
                                        }
                                    }

                                },
                                {
                                    extend: 'columnToggle',
                                    text: 'Toggle Group1',
                                    columns: '.group1'
                                },
                                {
                                    extend: 'columnToggle',
                                    text: 'Toggle Group2',
                                    columns: '.group2'
                                },

                                'colvis',

                            ],
                        }],
                     dom: 'Bfrtip',
                      lengthMenu: [
            [ 10, 25, 50, 250 ],
            [ '10 rows', '25 rows', '50 rows', '250 rows' ]
        ],
        columnDefs : [
  { targets: 1, hidden: (department == '6')||(department == '0'),
   "searchable": false,className:'never', responsive: false ,
   buttons:[
                {
            extend: 'colvis',
            columns: ':gt(0)'
        } ],
},

],
                    scrollY: 300,
                    scrollX: true,
                    scrollCollapse: true,
                    paging: true,
                    fixedColumns: true,
                    select: true,          

                });

【问题讨论】:

    标签: javascript jquery datatable


    【解决方案1】:

    您需要指定colvis要切换哪些列。

    查看the reference on hiding columnsthe reference on selecting columns

    由于您知道要隐藏 id 为 1 的列,因此您需要在 DataTable 中添加一个额外的选项

    colVis: {
        exclude: [ 1 ]
    

    }

    编辑:

    尝试替换

    'colvis',
    

    通过

    {
        extend: 'colvis',
        columns: ':gt(1)'
    },
    

    并删除

    buttons:[{
        extend: 'colvis',
        columns: ':gt(0)'
    }],
    

    从代码的底部

    【讨论】:

    • 感谢@JiFus。如上所述,我已经尝试过了。但是没用。
    • 感谢 JiFus! :D
    • @Jcc.Sanabria 很高兴它在 3 年后帮助了你...... :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 2019-06-16
    • 2019-03-18
    • 1970-01-01
    相关资源
    最近更新 更多