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

时间:2015-01-02 13:12:50

标签: php jquery gridview yii2

假设我的网格视图中有一列is_delivered,其中包含值的数组,例如

(1,1,0),(1,1,1),(0,0,0)总共是三种组合。我已将单元格的ID设置为“已发送”

现在我如何根据列中的值更改行的颜色,例如红色,蓝色或黄色。

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

我无法说明在哪里以及如何开始。我不能在这里使用==因为它可以包含3个以上的值。需要使用像contains这样的运算符。

我正在尝试使用像

这样的简单代码
<?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;

            },

        ],

所以列is_delivered是一对多,并从另一个模型拉出。

1 个答案:

答案 0 :(得分:4)

您可以简单地执行以下操作:

'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