yii2:jquery如果gridview列包含特定的值而不是改变颜色

比方说,我在我的网格视图is_delivered中有一列,其中包含例如值的数组

(1,1,0),(1,1,1),(0,0,0)三种组合。 我已将单元格的标识设置为“已交付”

现在我可以如何改变行的颜色,例如红色,蓝色或黄色,具体取决于列中的值。

例如,如果它是(1,1,1),那么行颜色将是绿色,如果(1,1,0),则行颜色将是黄色,否则是红色。

我无法弄清楚在哪里以及如何开始。 我不能在这里使用==,因为它可以包含3个以上的值。 需要使用一些像包含的运算符。

我正在尝试使用一个简单的代码

<?php      
$script = <<<EOD
alert ($('#delivered').val());

EOD;
$this->registerJs($script);        
?>

但它给了我一个没有任何价值的空白警报。

感谢您的任何建议。

更新用于派生is_delivered列的值的问题

[
             'attribute'=>'is_delivered',             
            'value' => function ($data) {
                $str = '';
                foreach($data->medicineRequests as $request) {
                    $str .= $request->is_delivered.',';
                }
                return $str;

            },

        ],

所以专栏是一对多的,并从另一个模型中提取。


你可以简单地做如下:

'attribute'=>'is_delivered',
'format'=>'raw',
'value'=>function($row){
      $values=[
      '(1,1,0)'=>'red',
      '(1,1,1)'=>'green',
      '(1,0,1)'=>'blue',
       //other values with its color
      ];
      return Html::tag('span', $row->is_delivered, ['style'=>'background-color:'.$values[$row->is_delivered]]);
}

通过上面的代码,我们拥有所有可能的值,并为每个值赋予一个颜色。 然后,我们在span标签中显示该值,并将背景色指定到$values数组中。 另外,如您所见,不需要使用java-script或任何==if语句。

你可以改进你的代码,如下所示:

['style'=>'background-color:'.isset($values[$row->is_delivered]) ? $values[$row->is_delivered] : 'white']

所以,如果这个值不存在于$values数组中,它会以white背景显示它。 请注意,我设置了background-color ,您必须将其改为color

链接地址: http://www.djcxy.com/p/31027.html

上一篇: yii2:jquery if gridview column contains specific value than change color

下一篇: change colour of table column based on true or false word