如何根据数据值Yii CGridView为行着色

时间:2016-04-18 10:23:19

标签: php css ajax yii cgridview

我有用户模型。

使用CGridView显示它我希望根据$model->is_admin为行着色,这是一个0或1的整数,所以有两种颜色。

可以通过CGridView的简单设置来完成吗?

控制器

/**
* Lists all models.
*/
public function actionIndex() {
    $model = new Users('search');
    $model->unsetAttributes();  // clear any default values
    if (isset($_GET['Users']))
        $model->attributes = $_GET['Users'];

    $this->render('index', array(
        'model' => $model,
    ));
}

查看

<div class="row">
    <div class="col-sm-12 table-responsive">
        <?php
        $this->widget('zii.widgets.grid.CGridView', array(
            'id' => 'users-grid',
            'itemsCssClass' => 'table table-bordered table-hover dataTable',
            'dataProvider' => $model->search(),
            'enablePagination' => false,
            // 'filter'=>$model,
            'columns' => array(
                'username',
                'first_name',
                'last_name',
                'email',
                ),
                array(
                    'class' => 'CButtonColumn',
                ),
            ),
        ));
        ?>
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

这是一个很好看的例子,可以帮助你:

http://www.yiiframework.com/wiki/314/cgridview-use-special-variable-data-in-the-htmloptions-of-a-column-i-e-evaluate-htmloptions-attribute/

我没有运气实现它,只使用内置功能,所以它可能是唯一的选择。 我没试过这个,但正如评论所说,它应该有效。

修改 我做到了,更短的方式

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $data_provider,
    'rowCssClassExpression' => '$data["is_admin"] ? "tr_isadmin" : ""',
    'columns' => array(
        array(
            'header' => 'Is admin?',
            'name' => 'is_admin',
        ),
    ),
);

因此,rowCssClassExpression根据$ data [“is_admin”]值为tr包装器添加一个类。

然后,只需添加像

这样的CSS
.tr_isadmin { 
    background-color: red; 
}

当然,这只是简化的例子。你必须根据自己的目的进行调整。