Ajout d'événement onclick et sélecteur d'ID pour une colonne de la grille d'administration de la radio de type
-
16-10-2019 - |
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.
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.