Posso scegliere quale colonne visualizzare in una CGridView dinamicamente?

Sto sperimentando la CGridView, che devo dire toglie un sacco di lavoro.

Ma mi trovo dinnanzi ad un ostacolo che non so se yii è in grado di gestire.

La CGridView è associata ad una tabella molto grande più di 200 colonne.

Molte non mi servono e ho visto tramite configurazione posso decidere cosa visualizzare e cosa no:







<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'call-rcms-grid',

	'dataProvider'=>$model->search(),

	'filter'=>$model,

	'columns'=>array(

	'CAMPO1',

	'CAMPO2',

        'CAMPO3',

        'CAMPO4',

        'CAMPO5',

        'CAMPO6',

        'CAMPO7',

        'CAMPO8',

        'CAMPO9',

.....



Ne rimangono comunque tante di colonne.

E ho notato che dopo la 6° colonna, la visualizzazione si rovina graficamente.

Compare una sidebar per scrollare i dati.

Vorrei risolvere facendo scegliere all’utente dinamicamente solo 6 delle 50 colonne a disposizione.

E’ possibile farlo?

Esiste magari un widget più potente o altro?

Beh, è semplicemente un array.





<?php if (CONDIZIONE) : ?>

<?php $colonne = array(

		'id',

		'nome',

		array(

			'class'=>'CButtonColumn',

		),

	); ?>

<?php else: ?>

<?php $colonne = array(

		'nome',

		'cognome',

		'data',

		'cf',

		array(

			'class'=>'CButtonColumn',

		),

	); ?>

<?php endif; ?>


<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'corso-grid',

	'dataProvider'=>$model->search(),

	'filter'=>$model,

	'columns'=>$colonne,

)); ?>