2013-03-11 37 views
1

末始終顯示在列我創建了一個觀察者增加了一個現場報網格管理員這樣的:Magento。爲什麼在管理網格在即使使用addColumnAfter

public function AddItemColumnToGrid($observer) 
{ 
... 
    if ($_type == 'adminhtml/newsletter_subscriber_grid') { 

     $_block->addColumnAfter('subscriber_name', array(
      'header'=> Mage::helper('newsletter')->__('Name'), 
      'type' => 'text', 
      'index' => 'subscriber_name', 
     ), 'subscriber_email'); 
    } 
... 
} 

我想不通。但Magento總是在末尾顯示我的Subscriber_name字段(作爲訂單中的最後一個)。 ColumnAfter不起作用。爲什麼?

我overring這樣的:

 <events> 
     <adminhtml_block_html_before> 

回答

1

這是因爲排序你勾入HTML生成之前發生:

Mage_Adminhtml_Block_Widget_Grid:

protected function _beforeToHtml() 
{ 
    $this->_prepareGrid();    // <-- sort columns 
    return parent::_beforeToHtml(); // <-- dispatch event 
} 

你可以做什麼添加列後再次排序:

$_block->addColumnAfter('subscriber_name', array(
     'header'=> Mage::helper('newsletter')->__('Name'), 
     'type' => 'text', 
     'index' => 'subscriber_name', 
    ), 'subscriber_email'); 
    $_block->sortColumnsByOrder(); 
相關問題