Php 隐藏列';在YII CGridView中
我有一个超过5列的表,我想隐藏一些列,这样只有在选中某行或展开某行时才会显示这些列 我使用的是YiFramework的CGridView,那么我如何才能做到这一点呢 任何帮助都是值得的 我想要一个这样的特性,以便在扩展特定记录时可以看到隐藏的列值 一种方法是:Php 隐藏列';在YII CGridView中,php,html,yii,Php,Html,Yii,我有一个超过5列的表,我想隐藏一些列,这样只有在选中某行或展开某行时才会显示这些列 我使用的是YiFramework的CGridView,那么我如何才能做到这一点呢 任何帮助都是值得的 我想要一个这样的特性,以便在扩展特定记录时可以看到隐藏的列值 一种方法是: 'columns'=>array( array( 'name'=>'columnName', 'visible'=>false ),
'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',
),
),
)); ?>
我能为你做的就是这些。请记住更改Java脚本函数以切换图像图标
我还没有这样做这需要向服务器发出ajax请求,还是您希望在客户端执行?在checkVisbile()函数中,当使字段可见时,为您设置逻辑。当您说“选择或切换”时,我假设它涉及ajax请求否,我想将其隐藏在文档中。。(没有ajax)通过ajax可以隐藏网格列,如果您发出ajax请求,它将不会坚持聚集。例如,如果您通过javascript隐藏列,但当您通过搜索/选择/页面导航刷新网格时,隐藏列将再次可见。因此,我的理解是,您应该在服务器端处理网格列的可见性确切的问题已经在此处解决,请遵循论坛线程:这很好,但要做到这一点,我需要将额外的列视为另一个元组,如何才能做到这一点,因为一行中的所有列都是同一个模型。您可以为您的代码添加一个解释,它实际上是做什么的?
'columns'=>array(
array(
'name'=>'columnName',
'htmlOptions' => array('style' => 'display:none;'),
'headerHtmlOptions'=>array('style' => 'display:none;'),
'filterHtmlOptions'=>array('style' => 'display:none;'),
),
...
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions'=>array('create','update','getExtra'),
'users'=>array('@'),
),
'columns'=>array(
array(
'name'=>'columnName',
'htmlOptions' => array('style' => 'display:none;'),
'headerHtmlOptions'=>array('style' => 'display:none;'),
'filterHtmlOptions'=>array('style' => 'display:none;'),
),
...