每个按钮的复选框,用于选择没有ColVis的Datatables 1.10中的列

时间:2015-09-21 17:14:06

标签: javascript datatables

由于在Datatables 1.10中不推荐使用ColVis,我正在寻找一种方法来为每个按钮添加一个复选框,以便在使用ColVis的example中完成相同的方式选择表中的列。

以下JSFiddle是我到目前为止所做的。以下是我正在使用的代码。

$(document).ready(function() {
var table = $('#example').DataTable( {
    dom: 'B',
    "buttons": [
                {
                    extend: 'colvis',
                    postfixButtons: [
                        {
                            extend: 'colvisRestore',
                            text: 'Restore'
                        }
                    ],
                    buttons : [{
                        extend: 'columnsToggle',
                    }],
                }
            ],
    }
); } );

我非常感谢您在这一方面的专业知识。

2 个答案:

答案 0 :(得分:11)

复选框已被inset / outset样式替换。但是,您可以使用CSS模拟复选框,请参阅以下规则:

.dt-button-collection a.buttons-columnVisibility:before,
.dt-button-collection a.buttons-columnVisibility.active span:before {
    display:block;
    position:absolute;
    top:1.2em;
    left:0;
    width:12px;
    height:12px;
    box-sizing:border-box;
}

.dt-button-collection a.buttons-columnVisibility:before {
    content:' ';
    margin-top:-6px;
    margin-left:10px;
    border:1px solid black;
    border-radius:3px;
}

.dt-button-collection a.buttons-columnVisibility.active span:before {
    content:'\2714';
    margin-top:-11px;
    margin-left:12px;
    text-align:center;
    text-shadow:1px 1px #DDD, -1px -1px #DDD, 1px -1px #DDD, -1px 1px #DDD;
}

.dt-button-collection a.buttons-columnVisibility span {
    margin-left:20px;    
}

样本

请参阅this jsFiddle以获取代码和演示。

注意

请参阅my other answer您的问题,解释为什么action不适用于columnsToggle按钮。

答案 1 :(得分:1)

我以@ gyrocode-com的答案为基础,使它看起来不那么“ button-y”,更像是简单的复选框列表,并支持新版本的DataTables和Buttons,因为它们现在使用<button> HTML标记而不是<a>生成colvis按钮。

buttons: ['colvis']

Column selection as a simple checkbox list

CSS

.dt-button-collection .dt-button.buttons-columnVisibility {
    background: none !important;
    background-color: transparent !important;
    box-shadow: none !important;
    border: none !important;
    padding: 0.25em 1em !important;
    margin: 0 !important;
    text-align: left !important;
}
.dt-button-collection .buttons-columnVisibility:before,
.dt-button-collection .buttons-columnVisibility.active span:before {
    display:block;
    position:absolute;
    top:1.2em;
    left:0;
    width:12px;
    height:12px;
    box-sizing:border-box;
}
.dt-button-collection .buttons-columnVisibility:before {
    content:' ';
    margin-top:-8px;
    margin-left:10px;
    border:1px solid black;
    border-radius:3px;
}
.dt-button-collection .buttons-columnVisibility.active span:before {
    font-family: 'Arial' !important;
    content:'\2714';
    margin-top: -15px;
    margin-left: 12px;
    text-align: center;
    text-shadow: 1px 1px #fff, -1px -1px #fff, 1px -1px #fff, -1px 1px #fff;
}
.dt-button-collection .buttons-columnVisibility span {
    margin-left:17px;    
}

这与多列colvis模板(例如two-columnfixed two-column)配合使用也很好。

buttons: [{
     extend: 'colvis',
     collectionLayout: 'two-column'
  }]

enter image description here

演示

JSFiddle进行实时演示。