1

グリッドのあるバックエンド管理ページで、行のグループの背景色を変更する必要があります。デフォルトでは行ごとに色を変更するのではなく、既知の列値に従ってグループに色を付けます。

私はこのSOの質問を調べていました:管理者や他の同様のページの注文グリッドの行の色を変更するアプローチ。しかし、この質問は繰り返される列の値を参照しているため、必要なものを再現することはできません。

グループごとに異なる色を使用するか、少なくともそれらのグループの別の色を使用する必要があります。

多分このようなもの:

ここに画像の説明を入力してください

4

3 に答える 3

9

解決策を探している人のために。Inchoo Webサイトでこのチュートリアルを使用しました: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>';
    }
}
?>

そして結果:

レンダリングされた列を持つグリッドのスクリーンショット

于 2012-12-12T10:19:01.317 に答える
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.' >';
    }
于 2014-06-23T09:47:49.533 に答える
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>';
}
于 2018-07-13T11:12:57.373 に答える