我在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
有时会被使用,但我只是想在简单的情况下修改集合setCollection
。
无论如何,该列都会显示,但不会产生任何数据。(当我尝试排序时页面错误)。
对此有什么想法吗?
更新
这篇文章是这个 SO 线程的扩展,我已经更新了它以匹配模块的当前状态。也就是说,我将列添加到sales_flat_order
和sales_flat_order_grid
。
从那篇文章中,我得到了一个设置此属性值的操作(在订单完成后)。
在这一点上我的问题是 - 如何updateGridRecords()
发挥作用?
=> updateGridRecords 似乎在调用 $order->save() 时自动调用(订单完成后我手动执行的操作)。
如果我理解正确,因为我没有从任何其他模型中提取数据,所以_prepareColumns
只需要调用即可。
=> 是的。保存 attr 后正确显示和排序。赢!