【问题标题】:Change the Row Color Based on the Column value in CGridView根据 CGridView 中的列值更改行颜色
【发布时间】:2012-06-18 05:25:58
【问题描述】:

在 Yii 中,CGridView 在行中有它自己的背景颜色。但我想做的是根据其中一列的值突出显示特定行。

例如,我有三列,id,name,status。现在,如果状态的值为 Inactive 或 0,我应该用某种颜色突出显示该行。

我简要阅读了课程参考并搜索了此站点。但找不到相关的解决方案。如果有一些例子或一些方向是正确的解决方案,那将不胜感激。

谢谢, 乌杰瓦尔

【问题讨论】:

    标签: yii


    【解决方案1】:

    CGridView 'rowCssClassExpression' 是获得你想要的东西的方式。

    $this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider'=>$dataProvider,
        'rowCssClassExpression'=>'($data->myFlag==0)?"normal":"especial"',
        'columns'=>array(
        ...
        ),
    ));
    

    您还可以调用自定义 php 函数,并将 $data 变量传递给它。该函数应该返回给定行的类名:)

    【讨论】:

    • 当我搜索这个时,我在诅咒 yii/zii。对不起'正确的!评论,但我特别感谢简单的修复。
    • @sucotronic 我有$data->created_at,这是时间戳,我想要突出显示行if($data-<created_at == $today),我也有$today = date('Y-m-d')。这种情况有什么解决办法吗?
    • @ersks 你可以使用:'rowCssClassExpression'=>'($data->created_at==date('Y-m-d'))?"highlight":""'
    【解决方案2】:

    为您的功能使用 rowCssClass 和 rowCssClassExpression。我没有测试此代码,但您可以使用该技巧来获得解决方案。

    $this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider'=>$dataProvider,
        'rowCssClass'=>array('odd','even'),
        'rowCssClassExpression'=>($data->status==0)?even:odd,
        'columns'=>array(
        ),
    ));
    

    【讨论】:

    • 'rowCssClass' 和 'rowCssClassExpression' 是mutually exclusive :(
    • 而且,虽然我尝试使用不带引号的 rowCssClassExpression 值,但它不起作用。条件总是错误的。所以,sucotronic 是对的!
    • 我说过我没有测试过这段代码,但这个技巧会奏效。
    • @OnkarJanwa 我有$data->created_at,这是时间戳,我想要突出显示行if($data-<created_at == $today),我也有$today = date('Y-m-d')。这种情况有什么解决办法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 2013-05-07
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2014-09-10
    • 2022-01-12
    相关资源
    最近更新 更多