У меня есть таблица с более чем 5 столбцами, я хочу скрыть некоторые столбцы, чтобы эти столбцы были показаны только в том случае, если выбран ряд строк или их расширение.
Я использую CGridView yiiframework, поэтому как я могу это сделать?
Любая помощь заметна.
Я хочу такую функцию, чтобы при расширении определенной записи я мог видеть значения скрытых столбцов
Один из способов:
'columns'=>array( array( 'name'=>'columnName', 'visible'=>false ), )
Поэтому вам нужно динамически манипулировать атрибутами видимости:
'visible'=>$this->checkVisible() //custom function
sth, как это, в зависимости от вашего требования
пример: 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;'), ), ...