如何根据数据值为行着色 Yii CGridView
How to color rows depending on data values 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>
这是一个可能对您有所帮助的漂亮示例:
我没有运气自己实现它,只使用内置功能,所以它可能是唯一的选择。
这个我没试过,但正如评论所说,它应该可以。
编辑:
我做到了,更短的方式
$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 添加了一个 class 用于基于 $data["is_admin"] 值的 tr 包装器。
然后,只需添加css喜欢
.tr_isadmin {
background-color: red;
}
当然,这只是简化的例子。您必须根据自己的目的对其进行调整。
我有用户模型。
用 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>
这是一个可能对您有所帮助的漂亮示例:
我没有运气自己实现它,只使用内置功能,所以它可能是唯一的选择。 这个我没试过,但正如评论所说,它应该可以。
编辑: 我做到了,更短的方式
$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 添加了一个 class 用于基于 $data["is_admin"] 值的 tr 包装器。
然后,只需添加css喜欢
.tr_isadmin {
background-color: red;
}
当然,这只是简化的例子。您必须根据自己的目的对其进行调整。