簡體   English   中英

在YII CGridView中隱藏列

[英]Hiding column's in YII CGridView

我有一個包含5列以上的表,我想隱藏一些列,以便僅在選擇了某行或將其展開時才顯示這些列。

我正在使用yiiframework的CGridView,那么我該怎么做呢?

任何幫助都是可觀的..

我想要這樣的功能,以便在擴展特定記錄時可以看到隱藏的列值

在此處輸入圖片說明

一種方法是:

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

因此,您需要動態地操縱可見性屬性:

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

這樣取決於您的要求

編輯 (使用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;'),
      ),
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM