数据表 - 隐藏/显示列

Posted

技术标签:

【中文标题】数据表 - 隐藏/显示列【英文标题】:DataTables - Hide/Show Columns 【发布时间】:2016-09-10 22:25:58 【问题描述】:

我正在尝试使用 Bootstrap 的切换按钮(输入复选框)在 DataTables 中显示/隐藏列。我创建了一个功能链接,用于显示/隐藏列,但是当我应用了 classdata-column 他们不适用于 checkbox.. javascript是这样的:

                $('.toggle-vis').on('click', function (e) 
                    e.preventDefault();

                    // Get the column API object
                    var column = table.column($(this).attr('data-column'));

                    // Toggle the visibility
                    column.visible(!column.visible());
                );
<a class="toggle-vis" data-column="7">Colina</a>
<input type="checkbox" data-column="0" class="toggle-vis" onchange='OnOff(this, "Carboidrati");' data-label-text="Carboidrati" checked>

【问题讨论】:

贴出不起作用的代码,渲染出来的页面没有太大帮助 您必须包含您的“默认”状态,以确保可见性和复选框。它们充当您创建的任何状态更改的参考。如果您遵循基本规则,通常“切换”效果很简单。 复选框可见且状态已选中 Here is another solution: 在不知道列名的情况下连续显示/隐藏数据表的列,您也可以修复任何列并使所有更改持久化。还有一个是colVis 【参考方案1】:

哇,研究起来很有趣!!!。问题在于您的事件处理:为了“监听”您需要监听 switchChange.bootstrapSwitch 事件的开关,因此更改您的代码以监听该事件而不是 click 应该可以解决您的问题:

$('.toggle-vis').on('switchChange.bootstrapSwitch', function(event, state) 
    event.preventDefault();
    var column = table.column(~~$(this).attr('data-column'));
    column.visible( ! column.visible() );
);

工作JSFiddle,希望对您有所帮助。

【讨论】:

您好,请问一下,我是新手,对您的解决方案非常感兴趣,但我已应用您的脚本但未应用功能。 JSFiddle @mastersuse:您没有包含相关库,并且您的标记有点混乱,应该可以:jsfiddle.net/annoyingmouse/tenL912o

以上是关于数据表 - 隐藏/显示列的主要内容,如果未能解决你的问题,请参考以下文章

MUI 数据表中的列不会根据状态真假条件隐藏或显示

根据列值显示/隐藏 jQuery 数据表 actionlink 按钮

DataTables 隐藏/显示隐藏列按钮 CSS 样式

如何持久化 ExtJS 数据网格列隐藏/显示/移动/调整大小?

如何在 yajra 数据表 laravel 8 的 html 中隐藏描述列但在导出 CSV 中显示

关于在数据表中隐藏额外列的问题