【发布时间】:2013-02-04 20:47:10
【问题描述】:
我已向sales_order_flat 表添加了一个自定义属性,并且我试图在sales_order/index 的网格中显示此属性。
我已成功使用客户属性完成此操作,但在对订单数据尝试相同操作时遇到错误。
<global>
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>WACI_AdminHtmlExt_Block_Sales_Order_Grid</sales_order_grid>
</rewrite>
</adminhtml>
</blocks>
<!-- etc -->
app/code/local/namespace/module/Block/Sales/Order/Grid.php
class WACI_AdminHtmlExt_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
{
protected function _prepareColumns()
{
$this->addColumn('dynamics_ord', array(
'header' => $this->__('Dynamics ID'),
'width' => '75px',
'index' => 'dynamics_ord',
));
$this->addColumnsOrder('dynamics_ord','entity_id');
return parent::_prepareColumns();
}
}
我看到_prepareCollection 是sometimes used,但我试图在setCollection 期间修改集合,如果没有别的,简单。
无论如何,列都会显示,但不会产生任何数据。 (当我尝试排序时页面错误)。
对此有什么想法吗?
更新
这篇文章是this SO thread 的扩展,我已经更新它以匹配模块的当前状态。也就是说,我正在向sales_flat_order 和sales_flat_order_grid 添加列。
从那篇帖子中,我有一个设置此属性值的操作(在订单完成后)。
此时我的问题是 - updateGridRecords() 是如何发挥作用的?
=> updateGridRecords 似乎在调用 $order->save() 时自动调用(我在订单完成后手动执行的操作)。
如果我理解正确,因为我没有从任何其他模型中提取数据,所以只需调用 _prepareColumns。
=> 是的。保存 attr 后正确显示和排序。赢了!
【问题讨论】:
标签: magento gridview attributes