在带有网格的后端管理页面上,我需要更改行组的背景颜色。默认情况下不是逐行交替颜色,而是根据已知的列值对组进行着色。
我正在研究这个 SO 问题:在管理和其他类似页面中更改订单网格上的行颜色的方法。但无法重现我需要的内容,因为这个问题是指将重复的列中的值。
我需要为不同的组使用不同的颜色,或者至少使用这些组的替代颜色。
也许是这样的:
在带有网格的后端管理页面上,我需要更改行组的背景颜色。默认情况下不是逐行交替颜色,而是根据已知的列值对组进行着色。
我正在研究这个 SO 问题:在管理和其他类似页面中更改订单网格上的行颜色的方法。但无法重现我需要的内容,因为这个问题是指将重复的列中的值。
我需要为不同的组使用不同的颜色,或者至少使用这些组的替代颜色。
也许是这样的:
对于任何寻求解决方案的人。我在 Incho 网站上使用了本教程:为 Magento 网格中的自定义列添加自定义渲染器。有一些 SO 问题也有助于理解解决方案。
我没有像最初想要的那样更改整行背景颜色,我只是在修改单元格背景。但最后,足以向用户指出这一行有些不同。我所做的是添加一个新的自定义列。在renderer
房产上,我引用了一个新类。
$this->addColumn('collision_type', array(
'header' => $helper->__('Collision'),
'align' => 'center',
'index' => 'collision_type',
'type' => 'action',
'renderer'=> new Dts_Banners_Block_Adminhtml_Collisions_Grid_Renderer_Collisiontype(),
));
我将所需的类放在一个新的子树中:
Grid
└─ Renderer
└─ Collisiontype.php
这是应该呈现列的新类。要拥有不同的颜色,只需要评估$value
变量并为相应的值应用不同的颜色样式,这就是我现在正在做的事情。
<?php
class Dts_Banners_Block_Adminhtml_Collisions_Grid_Renderer_Collisiontype extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
public function render(Varien_Object $row) {
$value = $row->getData($this->getColumn()->getIndex());
return '<div style="color:#FFF;font-weight:bold;background:#F55804;border-radius:8px;width:100%">'.$value.'</div>';
}
}
?>
结果:
就我而言,我使用了上面的代码片段。我需要在网格中为类别创建一个自定义单选列。所以我这样设置了所有条件。
public function render(Varien_Object $row) {
$category = Mage::registry('current_category');
$screenId = $category->getCategoryAttachedID();
if($row->getId()==$screenId)$checked='checked="checked"';
else $checked='';
return '<input type="radio" name="screen_id" value="'.$row->getId().'" '.$checked.' >';
}
上面的答案很好,但有时您想在不创建新文件的情况下做同样的事情。
这是在网格文件中实现相同结果的另一种方法。
$this->addColumn('collision_type', array(
'header' => $helper->__('Collision'),
'align' => 'center',
'index' => 'collision_type',
'type' => 'action',
'frame_callback' => [$this, '_formatCell']
));
然后在同一个文件中
public function _formatCell($value, Varien_Object $row, Mage_Adminhtml_Block_Widget_Grid_Column $column)
{
$value = $row->getData($column->getIndex());
return '<div style="color:#FFF;font-weight:bold;background:#F55804;border-radius:8px;width:100%">'.$value.'</div>';
}