根据Yii2 gridview单元格的值更改背景颜色

9

我正在尝试制作根据一个单元格中的值计算数字而变化的背景颜色。这是我的代码:

[
'attribute' => 'coefTK',
'label' => '<abbr title="Koefisien Jumlah Tenaga Kerja">TK</abbr>',
'encodeLabel' => false,
'headerOptions' => ['style'=>'text-align:center'],
'options' => [ 'style' => $dataProvider['coefTK']/$dataProvider['coefTK_se']<2 ? 'background-color:red':'background-color:blue'],
        ],

但是我遇到了一个错误,错误提示为“无法将yii\data\ActiveDataProvider类型的对象用作数组”

那么,我该如何更改具有某些计算值的背景gridview单元格?

3个回答

8
使用 contentOptions
[
    'attribute' => 'coefTK',
    'label' => '<abbr title="Koefisien Jumlah Tenaga Kerja">TK</abbr>',
    'encodeLabel' => false,
    'headerOptions' => ['style'=>'text-align:center'],
    'contentOptions' => function ($model, $key, $index, $column) {
        return ['style' => 'background-color:' 
            . (!empty($model->coefTK_se) && $model->coefTK / $model->coefTK_se < 2
                ? 'red' : 'blue')];
    },
],

1
使用rowOptions并更改class的值以更改颜色。
'rowOptions' => function($model, $key, $index, $column){
    if($index % 2 == 0){
        return ['class' => 'info'];
    }
},

这将生成以下类似输出的结果:

output


0
在Gridview中添加rowOptions
<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'rowOptions' => function($model, $key, $index, $column){
        if($index % 2 == 1){
            return ['class' => 'info'];
        }
    },
    'columns' => [
    .........

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接