如何在 Yii2 Gridview 中更改 1 行的背景

How to change background of 1 row in Yii2 Gridview

我正在使用 Yii 2,它是显示信息的网格视图。

现在,我的问题是每当用户扫描两个相同的序列号 and/or mac 地址时,它应该突出显示该行(将颜色更改为红色),并显示一些错误符号或其他内容.

截图:

我想要的样子:

我是 Yii2 的新手,不完全了解他们如何使用网格视图。我一直在研究这个特定问题,但找不到任何东西。

Gridview 代码

 <?= GridView::widget([
    'id' => 'scan-batch-grid',
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        ['class' => 'yii\grid\CheckboxColumn'],
        [
            'attribute' => 'product_ID',
            'value' => 'product.name'
        ],
        'SN',
        'MAC',
        [
            'class' => 'yii\grid\ActionColumn',
            'urlCreator' => function ($action, $model, $key, $index) {
                    return Url::to(['scan-batch/view',  'id' => $key, 'scan' => $model->scan_batch_ID]);
            },
            'buttons' => [
                'update' => function ($url, $model, $key) {
                    return '';
                },
                'delete' => function ($url, $model, $key) {
                    return '';
                },
            ],
        ],
    ],
]); ?>

编辑

我只想知道如何只改变一行的颜色。

知道了!

Yii2 : Adding Classes to Rows in the GridView (YouTube)

Yii2 Gridview row by row css expression

只需将 rowOptions 添加到您的 gridview。

<?= GridView::widget([
    'id' => 'scan-batch-grid',
    'dataProvider' => $dataProvider,
    'rowOptions'=>function($model){
            if($a == $b){
                return ['class' => 'danger'];
            }
    },

感谢您发布您的回答 Paramone。效果很好。

这是我的实现:

    <?= GridView::widget([
    'dataProvider' => $dataProvider,
    'rowOptions' => function ($model) {
        if ($model->name == 'test') {
            return ['class' => 'info'];
        }
    },