Скрытие столбца в YII CGridView

У меня есть таблица с более чем 5 столбцами, я хочу скрыть некоторые столбцы, чтобы эти столбцы были показаны только в том случае, если выбран ряд строк или их расширение.

Я использую CGridView yiiframework, поэтому как я могу это сделать?

Любая помощь заметна.

Я хочу такую ​​функцию, чтобы при расширении определенной записи я мог видеть значения скрытых столбцов

введите описание изображения здесь

Один из способов:

'columns'=>array( array( 'name'=>'columnName', 'visible'=>false ), ) 

Поэтому вам нужно динамически манипулировать атрибутами видимости:

  'visible'=>$this->checkVisible() //custom function 

sth, как это, в зависимости от вашего требования

Изменить (используя ajax + jquery)

пример: views / user / admin.php

 ..... ..... <?php $toggleUDetails = <<<JS $('a.toggle').live('click',function(e){ e.preventDefault(); if(this.href.split('#')[1]=='loaded') return $(this).closest("tr").next('tr.toggle').toggle(); trow=$(this).closest("tr"); var ajaxOpts={type:"POST", url:this.href ,dataType:'json',success:function(data){ $(trow).after(data.row); } }; this.href=this.href+'#loaded'; $.ajax(ajaxOpts); }); JS; Yii::app()->clientScript->registerScript('toggleUD', $toggleUDetails, CClientScript::POS_READY); $this->widget('zii.widgets.grid.CGridView', array( 'id'=>'user-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'columns'=>array( array( 'class'=>'CButtonColumn', 'header'=>'Toggle Details', 'template'=>'{toggle}', 'buttons'=>array( 'toggle'=>array( 'label'=>'Details', 'imageUrl'=>Yii::app()->request->baseUrl.'/images/expand.png', 'url'=>'Yii::app()->createUrl("user/getExtra", array("id"=>$data->id))', 'options'=>array('class'=>'toggle', ), ), ), ), 'id', 'username', 'password', 'email', array( 'class'=>'CButtonColumn', ), ), )); ?> 

Пользовательский контроллер

 public function actionGetExtra($id){ $model=User::model()->findByPk($id); echo json_encode(array('row'=> '<tr class="toggle"><td colspan="6">'. $model->username.'</td></tr>')); } 

Включить права доступа:

 array('allow', // allow authenticated user to perform 'create' and 'update' actions 'actions'=>array('create','update','getExtra'), 'users'=>array('@'), ), 

за что я могу вам помочь. Не забудьте изменить функцию сценария Java, чтобы переключить значок изображения, который я еще не сделал

 'columns'=>array( array( 'name'=>'columnName', 'htmlOptions' => array('style' => 'display:none;'), 'headerHtmlOptions'=>array('style' => 'display:none;'), 'filterHtmlOptions'=>array('style' => 'display:none;'), ), ...