我是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中使用这个]
答案 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'
])