2013-07-01 36 views
1

我已經重寫了Mage_Adminhtml_Block_Sales_Order_Grid以添加3列,如下所示。覆蓋了magento訂單網格後,分頁不起作用?

  1. 客戶電子郵件
  2. 付款方式
  3. 訂購產品

我的擴展電網等級如下表所示。

<?php 
class Wowmall_ExtendedGrid_Block_Adminhtml_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid 
{ 

    protected function _getCollectionClass() 
    { 
     return 'sales/order_grid_collection'; 
    } 

    protected function _prepareCollection() 
    { 
     $collection = Mage::getResourceModel($this->_getCollectionClass()); 
     $collection->getSelect() 
        ->joinLeft('sales_flat_order_payment', 'main_table.entity_id = sales_flat_order_payment.parent_id','method') 
        ->join('customer_entity', 'main_table.customer_id = customer_entity.entity_id','email') 
        ->join('sales_flat_order_item', 'main_table.entity_id = sales_flat_order_item.order_id','name')->distinct(true); 

     $collection->getSelect()->group('main_table.entity_id'); 

     $this->setCollection($collection); 
     return $this; 
    } 

    protected function _prepareColumns() 
    { 

     // rest code... 

     $this->addColumn('email', array(
      'header' => Mage::helper('sales')->__('Customer Email'), 
      'index' => 'email', 
      'type' => 'text', 
     )); 

     $this->addColumn('method', array(
     'header' => Mage::helper('sales')->__('Payment Type'), 
     'index'  => 'method', 
     'type'  => 'options', 
     'options' => array('verisign' => 'Credit Card', 'checkmo' => 'Check', 'purchaseorder' => 'Purchase Order'), 
    )); 

     $this->addColumn('name', array(
      'header' => Mage::helper('sales')->__('Product(s) Ordered'), 
      'index' => 'name', 
      'type' => 'text', 
     )); 

     // rest code... 

但分頁不起作用。所有記錄都在一個頁面中加載。 有什麼建議嗎?

回答

5

我自己找到了解決方案。

由於下面的說明而發生該問題。

$collection->getSelect()->group('main_table.entity_id'); 

我編輯位於app/code/local/Varien/Data/Collection/Db.php

lib/Varien/Data/Collection/Db.php

我db.php中的文件以下是代碼。

.....//rest code 

public function getSelectCountSql() 
    { 
     $this->_renderFilters(); 

     $countSelect = clone $this->getSelect(); 
     $countSelect->reset(Zend_Db_Select::ORDER); 
     $countSelect->reset(Zend_Db_Select::LIMIT_COUNT); 
     $countSelect->reset(Zend_Db_Select::LIMIT_OFFSET); 
     $countSelect->reset(Zend_Db_Select::COLUMNS); 

     if(count($this->getSelect()->getPart(Zend_Db_Select::GROUP)) > 0) { 
      $countSelect->reset(Zend_Db_Select::GROUP); 
      $countSelect->distinct(true); 
      $group = $this->getSelect()->getPart(Zend_Db_Select::GROUP); 
      $countSelect->columns("COUNT(DISTINCT ".implode(", ", $group).")"); 
     } else { 
      $countSelect->columns('COUNT(*)'); 
     } 
     return $countSelect; 
    } 
....//rest code 

然後清除緩存和會話後它的工作.. :)

+0

完美,這爲我工作,謝謝! :) – Mike

+0

你保存了一天..謝謝.. :) –

+0

很高興它幫助你:) – Sukeshini