Ajout d'événement onclick et sélecteur d'ID pour une colonne de la grille d'administration de la radio de type

magento.stackexchange https://magento.stackexchange.com/questions/4724

Question

J'ai une grille d'administration qui montre des détails de ce produit (comme celui dans le catalogue / Gérer les produits) avec la première colonne en tant que type radio.

Comment ajouter événement onclick, qui doit appeler une fonction js avec un paramètre de valeur dynamique (comme la valeur du bouton radio lui-même), et le sélecteur de id pour le bouton radio, dont la valeur doit être une combinaison de statique et de la valeur dynamique (tels que column_id + radio_button_value).

La classe qui définit la déclaration de la colonne est dans la classe qui va de Mage_Adminhtml_Block_Widget_Grid et mes déclarations de colonne sont dans le procédé de _prepareColumns, et le code pour les deux premières colonnes de ma grille a été déclarée comme suit:

$this->addColumn('products_grid_radio',
         array(
                'header' => '',
                'type'      => 'radio',
                'html_name' => 'products_grid_radio',
                'value'    => array('1'),
                'align' =>'center',
                //'id'   => 'products_grid_radioproducts_grid_radio_value',
                //'onclick'   =>   'setProduct(products_grid_radio_value);',
           ));

   $this->addColumn('entity_id',
        array(
            'header'=> Mage::helper('catalog')->__('ID'),
            'width' => '50px',
            'type'  => 'number',
            'index' => 'entity_id',
    ));

Quelle est la bonne façon d'ajouter un événement de onclick et le sélecteur de id à une colonne de type radio?

Merci d'avance.

Était-ce utile?

La solution

Si vous avez un oeil à la radio pour renderer de type colonne, Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Radio, vous pouvez voir qu'il n'y a pas moyen d'ajouter un écouteur d'événement onclick:

public function render(Varien_Object $row)
{
    $values = $this->getColumn()->getValues();
    $value  = $row->getData($this->getColumn()->getIndex());
    if (is_array($values)) {
        $checked = in_array($value, $values) ? ' checked="checked"' : '';
    } else {
        $checked = ($value === $this->getColumn()->getValue()) ? ' checked="checked"' : '';
    }
    $html = '<input type="radio" name="' . $this->getColumn()->getHtmlName() . '" ';
    $html .= 'value="' . $row->getId() . '" class="radio"' . $checked . '/>';
    return $html;
}

Si vous cherchez à dupliquer la fonctionnalité des actions de masse clients ou réseau de produits, jetez un oeil à la méthode Mage_Adminhtml_Block_Widget_Grid::_prepareMassactionColumn().
Il ajoute une colonne avec le massaction de type.
Elle est appelée automatiquement chaque fois que vous ajoutez une action de masse à une grille, mais peut aussi être utilisé indépendamment.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top