我正在设计一个基于我自己的模型的自定义 adminhtml 网格,我已经向网格添加了一个操作列,我希望能够单击它以将一些文本复制到剪贴板。
所以在 Grid.php 的 _prepareColumns() 函数中,我添加了操作列,如下所示:
$this->addColumn('action',array(
'header' => Mage::helper('sales')->__('To Clipboard'),
'width' => '5%',
'type' => 'action',
'getter' => 'getId',
'actions' => array(
array(
'caption' => Mage::helper('sales')->__('Copy'),
'url' => array('base'=>'*/*/toclipboard'),
'field' => 'id'
)
),
'filter' => false,
'sortable' => false,
'is_system' => true,
)
);
我可能需要使用 Javascript 来执行此操作,但我不太确定如何使用。奇怪的是,使用上面的方法也会导致页面重新加载,即使我已经成功地将 $this->setUseAjax(true);
添加到 __construct();
。
希望能提供一些意见。
最佳答案
您可以在这里做一些有趣的事情。主要是,您需要引用 Action renderer和 Grid Javascript .您现在拥有的代码应该在操作列中呈现单个链接。但是,如果您提供一系列操作,这将变为 <select>
列表。当 <select>
呈现,然后 grid.js 文件负责执行操作。
以下是您将在“ Action ”数组中传递的内容的一些示例:
带有链接的 Javascript Onclick
...
'actions' => array(
array(
'caption' => Mage::helper('sales')->__('Copy'),
'onclick' => 'window.location = "' . Mage::getUrl('*/*/toclipboard') . '"'
)
),
...
运行前确认
...
'actions' => array(
array(
'caption' => Mage::helper('sales')->__('Copy'),
'url' => array('base'=>'*/*/toclipboard'),
'confirm' => true
)
),
...
渲染 <select>
操作列表(在弹出窗口中打开最后一个操作)
...
'actions' => array(
array(
'caption' => Mage::helper('sales')->__('Copy'),
'url' => array('base'=>'*/*/toclipboard'),
'confirm' => true
),
array(
'caption' => Mage::helper('sales')->__('Example'),
'onclick' => 'window.location = "' . Mage::getUrl('*/*/toclipboard') . '"'
),
array(
'caption' => Mage::helper('sales')->__('Popup'),
'popup' => true
'url' => array('base'=>'*/*/toclipboard'),
)
),
...
关于javascript - 带有 javascript 操作列的 Magento adminhtml 网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19381217/