Nascondere la colonna in YII CGridView

Ho una tabella con più di 5 colonne, voglio hide alcune colonne in modo che quelle siano mostrate solo se è selezionata una row o espansa.

Sto usando CGridView di yiiframework, quindi come posso farlo in questo?

Qualsiasi aiuto è apprezzabile ..

Voglio una function come questa, così che espandendo un particolare record posso vedere i valori delle colonne nascoste

inserisci la descrizione dell'immagine qui

Un modo è:

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

Quindi è necessario manipolare gli attributi di visibilità in modo dinamico:

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

come questo a seconda delle tue esigenze

Modifica (usando ajax + jquery)

esempio: 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', arrays( 'id'=>'user-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'columns'=>arrays( arrays( 'class'=>'CButtonColumn', 'header'=>'Toggle Details', 'template'=>'{toggle}', 'buttons'=>arrays( 'toggle'=>arrays( 'label'=>'Details', 'imageUrl'=>Yii::app()->request->baseUrl.'/images/expand.png', 'url'=>'Yii::app()->createUrl("user/getExtra", arrays("id"=>$data->id))', 'options'=>arrays('class'=>'toggle', ), ), ), ), 'id', 'username', 'password', 'email', arrays( 'class'=>'CButtonColumn', ), ), )); ?> 

Controller utente

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

Abilita i diritti di accesso:

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

per quello che posso farti. Ricordarsi di cambiare la function di script Java per triggersre l'icona dell'image Non l'ho fatto

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