Yii CGridView CButtonColumn 根据内容显示不同的按钮

如何将CButtonColumn中的Label和imageUrl根据行数据的状态的不同展示不同的数据呢

例如CGridView的行数据中包含锁定状态,在已经锁定的状态下显示解锁图片,在未锁定的状态下显示锁定的状态

步骤一: 创建一个CButtonColumn的子类

Yii::import(‘zii.widgets.grid.CButtonColumn’);

class ExprButtonColumn extends CButtonColumn
{
protected function renderButton($id, $button, $row, $data)
{
if (isset($button['label']) && strpos($button['label'], ‘$’) > -1)
{
$button['label']= $this->evaluateExpression($button['label'],array(‘data’=>$data,’row’=>$row));
}
if (isset($button['imageUrl']) && strpos($button['imageUrl'], ‘$’) > -1)
{
$button['imageUrl']= $this->evaluateExpression($button['imageUrl'],array(‘data’=>$data,’row’=>$row));
}
parent::renderButton($id, $button, $row, $data);
}
}

步骤二: 在模板中使用新类进行配置

array(
‘class’=>’ExprButtonColumn’,
‘template’=>’{view}{lock}’,
‘buttons’=>array(
‘view’=>array(
‘label’=>’view project’,
‘url’=>’Yii::app()->controller->createUrl(“project/view”,array(“qid”=>$data->id))’,
),
‘lock’=>array(
‘label’=>’$data->lock_flag == “1″ ? “Unlock The Project” : “Lock The Project”‘,
‘imageUrl’=>’Yii::app()->request->baseUrl.”/images/”.($data->lock_flag == “1″ ? “unlock.gif” : “lock.gif”)’,
‘url’=>’Yii::app()->controller->createUrl(“project/lock”,array(“qid”=>$data->id))’,
),
),
),

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Correctness AdapterViewChildren Summary: AdapterViews can...
    MarcusMa阅读 8,928评论 0 6
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,591评论 2 45
  • 当你的生活输给了时光,你的世界充满争吵 是否是丢了生活的重心? 还是赶不上时光的脚步? 或是已经失去了生活目标? ...
    前度小花静院阅读 225评论 0 0
  • 今天碰到的这个错误: 我的解决方式: 现在在同一个工程分了多个版本导致的,切换版本时对应控制器的target me...
    WSGNSLog阅读 1,370评论 0 0
  • 把山装进心里,我就变得沉重了 把海装进心里,我就变得宽广了 把风装进心里,我就变得轻快了 把你装进心里, …… …...
    黄梁一阅读 215评论 0 0