yii2 gridview切换列

时间:2017-10-27 06:17:21

标签: gridview yii2

我是yii2的新手。并慢慢学习。 我在我的项目中使用yii2 gridview我想动态显示隐藏列。 需要这样的东西[https://datatables.net/examples/api/show_hide.html =>演示在这个链接中给出]但不能理解如何做到这一点?有人可以帮忙吗?

代码=>

<?php 

    $gridColumns = [
                     ['class' => 'yii\grid\SerialColumn'],
                     ['class' => 'yii\grid\CheckboxColumn'],  
[
                    'header' => '<input type="checkbox"> Name',//onclick of this checkbox show / hide the column 
                    'attribute'=>'name',                                          
                ],   
                    'company_mail', 
                    'no_employees',
                    'email:email', 
                    .
                    .
                    .];
            echo GridView::widget([
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => $gridColumns,
    ]); 
    ?>

也试过这个=&gt; 'visible'=>false, 但它永久隐藏......在哪里添加if()条件??

如何解决这个问题..谁能解决?

同样[Toggle Column visibility in Yii Framework用于cgridview我可以在yii2中使用这个]

1 个答案:

答案 0 :(得分:1)

这是使用JavaScript或jQuery完成的。 你给的example使用jQuery。 如果您检查页面,您可以找到使其正常工作所需的所有代码。

切换列的链接具有data-column属性,其中包含列的编号(从0开始):

<a class="toggle-vis" data-column="0">Name</a>

该页面包含脚本,该脚本用它的数字切换列(使用DataTables插件):

$(document).ready(function() {
    //getting the table that we will be working with
    var table = $('#example').DataTable( {
        "scrollY": "200px",
        "paging": false
    } );

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

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

        // Toggle the visibility
        column.visible( ! column.visible() );
    } );
} );

这是一个简单的脚本,可以使用前面提到的链接(在本例中为从1 开始)和任何表格(只需切换#example与您的gridview的ID ):

$(document).ready(function() {
    $('a.toggle-vis').on('click', function(e) {
        var column = $(this).attr('data-column');
        $('#example th:nth-child(' + column + '), #example td:nth-child(' + column + ')').toggle();
    });
});

给出gridview表id:

echo GridView::widget([
       'tableOptions' => ['id' => 'example'],
       'class' => 'table table-striped table-bordered'
])