yii2:jquery 如果 gridview 列包含特定值而不是更改颜色
yii2:jquery if gridview column contains specific value than change color
假设我的网格视图中有一列 is_delivered,其中包含值数组,例如
(1,1,0), (1,1,1),(0,0,0) 一共是三个组合。我已将单元格的 ID 设置为 'delivered'
现在如何根据列中的值更改行的颜色,例如红色、蓝色或黄色。
例如,如果是 (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 是一对多的,并且是从另一个模型中提取的。
您可以像下面这样简单地做:
'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
。
假设我的网格视图中有一列 is_delivered,其中包含值数组,例如
(1,1,0), (1,1,1),(0,0,0) 一共是三个组合。我已将单元格的 ID 设置为 'delivered'
现在如何根据列中的值更改行的颜色,例如红色、蓝色或黄色。
例如,如果是 (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 是一对多的,并且是从另一个模型中提取的。
您可以像下面这样简单地做:
'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
。