10

I am trying to make background color that depending on the value calculation number in one cell. This is my code:

[ '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'], ], 

but i got an error, that say "Cannot use object of type yii\data\ActiveDataProvider as array"

So, How can i change the background gridview cell that have value from some calculation ?

3 Answers 3

9

Use 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')]; }, ], 
Sign up to request clarification or add additional context in comments.

Comments

1

Use the rowOptions and change the value of class to change the color.

'rowOptions' => function($model, $key, $index, $column){ if($index % 2 == 0){ return ['class' => 'info']; } }, 

This will generate an output like the following:

output

Comments

0

rowOptions add in Gridview

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.