Magento,组的不同的背景颜色在后端栅格的行

时间:2012-12-07 15:36:46

标签: magento grid magento-1.7

在带有网格的后端管理页面上,我需要更改行组的背景颜色。默认情况下不是逐行替换颜色,而是根据已知列值着色组。

我正在研究这个问题:Approach on changing row color on orders grid in admin和其他类似的页面。但是无法重现我需要的东西,因为这个问题指的是一个将重复的列中的值。

我需要为不同的组使用不同的颜色,或者至少使用这些组的替代颜色。

也许是这样的:

enter image description here

3 个答案:

答案 0 :(得分:9)

对于任何寻找解决方案的人。我在Inchoo网站上使用了本教程:Add custom renderer for a custom column in Magento grid。有一些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>';
    }
}
?>

结果:

Screen shot of grid with rendered column

答案 1 :(得分:1)

就我而言,我使用了上面的代码片段。我需要在网格中为类别创建自定义无线电列。所以我把所有条件都放在这个。

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.' >';
    }

答案 2 :(得分:1)

上面的答案很好,但是有时您想要做同样的事情而不创建新文件。
这是获得网格文件中剩余相同结果的另一种方法。

$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>';
}