Ich möchte ein Admin-Grid erstellen, das bearbeitet werden kann. Das Problem ist, dass die ID-Spalte dieses Rasters ein nicht automatischer Inkrementwert ist. Ist das möglich zu implementieren?
Kann jemand Tutorials oder Artikel dazu vorschlagen?
UPDATE: Ich verwende eine Sammlung, die durch Verbinden der Magento-Attributsammlung mit meiner benutzerdefinierten Tabelle gewonnen wird. Der unten angegebene Code enthält jedoch nur die Produktattribut-Sammlung.
ID
Spalte enthält dieattribute_id
Grid.php
<?php
class BalanceAP21Connector_ProductSync_Block_Adminhtml_Attributemapping_Edit_Tab_Attribute
extends Mage_Adminhtml_Block_Widget_Grid
{
/**
* Constructor, ensures pagination is hidden
*/
public function _construct()
{
$this->setId('attribute_edit');
$this->setUseAjax(true);
$this->setDefaultSort('attribute_id');
$this->setPagerVisibility(true);
$this->setSaveParametersInSession(true);
parent::_construct();
}
/**
* Prepare grid collection object. Collection object populated
* based on Apparel 21 module settings in admin configuration section.
*/
public function _prepareCollection()
{
$collection = Mage::getResourceModel('catalog/product_attribute_collection');
$collection->addFieldToFilter('frontend_label', array('notnull' => true));
//echo $collection->getSelectSql();exit;
$this->setCollection($collection);
parent::_prepareCollection();
return $this;
}
/**
* Prepare columns for the grid
*/
public function _prepareColumns()
{
$helper = Mage::helper('productsync');
$this->addColumn('attribute_id', array(
'header' => $helper->__('ID'),
'index' => 'attribute_id'
));
$this->addColumn(
'frontend_label',
array(
'header' => $helper->__('Reference Type Name'),
'index' => 'frontend_label'
)
);
$this->addColumn(
'attribute_ids',
array(
'header' => $helper->__('Attribute'),
'width' => '1',
'type' => 'options',
'index' => 'attribute_ids',
'editable' => true,
'options' => Mage::getModel('productsync/attributemapping_system_config_source_attributes')
->toOptionArray(),
'renderer' => 'productsync/adminhtml_attributemapping_widget_grid_column_renderer_options',
)
);
$this->addColumn(
'note_code',
array(
'header' => $helper->__('AP21 note code'),
'index' => 'note_code',
'type' => 'input'
)
);
$this->addColumn(
'note_regexp',
array(
'header' => $helper->__('Note regexp'),
'index' => 'note_regexp',
'type' => 'input'
)
);
return parent::_prepareColumns();
}
public function getGridUrl()
{
//return $this->getUrl("*/*/edit", array("attribute_id" => $row->getId()));
return $this->getUrl('*/*/grid', array('_current'=>true));
}
}
Mein Gitter ist wie folgt.
magento-1.9
adminhtml
grid
Sukeshini
quelle
quelle
Antworten:
Verwenden Sie den folgenden Code, um eine Bearbeitungsaktion hinzuzufügen und einen Wert zusammen mit dieser Aktion zu übergeben
Dadurch wird eine Zeilen-URL an js Ereignishandler angehängt. Wenn Sie also auf ein Rasterelement klicken, wird dies
editAction
in Ihrer Controller-Datei ausgelöst . Sie können diese Parameter wie folgt erhalten.quelle
getRowUrl
wird verwendet, um das zu tun. Sie möchtenaction
hier keine Spalte hinzufügen . Fügen Sie dies einfach hinzu, dann klicken Sie auf eine beliebige Zeile, dieeditAction
in Ihren Controllern ausgelöst wird