Magento - 网格分页

时间:2012-08-14 14:21:57

标签: magento gridview pagination

我在magento后端创建了网格,但分页不起作用。无论我选择的每页有多少条记录,页面上总会显示所有记录。现在我在数据库中有41条记录,网格上方的“统计数据”正常(找到的页数和记录数):

Page 1 of 3 pages | View 20 per page | Total 41 records found

哪个档案负责分页? 某些专栏的订单还存在另一个问题。对于前者记录的显示方式与我通过ID选择ASC或DESC顺序的方式相同......

网格:

public function __construct() {
        parent::__construct();

        $this->setId('logger_grid');
        $this->setUseAjax(FALSE);
        $this->setDefaultSort('id');
        $this->setDefaultDir(Varien_Data_Collection::SORT_ORDER_ASC);
        $this->setSaveParametersInSession(TRUE);
    }

    public function _prepareCollection() {
        $collection = Mage::getModel('logger/logger')->getCollection()->load();
        $this->setCollection($collection);
        return parent::_prepareCollection();
    }

    public function _prepareColumns() {
        $this->addColumn('id', array(
            'header' => Mage::helper('logger')->__('ID'),
            'sortable' => TRUE,
            'index' => 'log_id',
            'editable' => FALSE,
        ));

        $this->addColumn('interface', array(
            'header' => Mage::helper('logger')->__('Interface'),
            'sortable' => TRUE,
            'index' => 'interface',
            'editable' => FALSE,
        ));

        $this->addColumn('type', array(
            'header' => Mage::helper('logger')->__('Type'),
            'sortable' => TRUE,
            'index' => 'type',
            'editable' => FALSE,
        ));

        $this->addColumn('description', array(
            'header' => Mage::helper('logger')->__('Description'),
            'sortable' => TRUE,
            'index' => 'description',
            'editable' => FALSE,
        ));

        $this->addColumn('message_data', array(
            'header' => Mage::helper('logger')->__('Message'),
            'sortable' => TRUE,
            'index' => 'message_data',
            'editable' => FALSE,
        ));

        $this->addColumn('time', array(
            'header' => Mage::helper('logger')->__('Time'),
            'sortable' => TRUE,
            'index' => 'time',
            'editable' => FALSE,
            'type' => 'datetime',
        ));

        return parent::_prepareColumns();
    }

    public function getRowUrl($row) {
        return $this->getUrl('*/*/edit', array('id' => $row->getId()));
    }

Collection.php:

public function _construct(){
    $this->_init("logger/logger");
}

4 个答案:

答案 0 :(得分:4)

好的,问题解决了。一如既往只是一件小事......在我使用的_prepareCollection()函数中 由于$collection = Mage::getModel('logger/logger')->getCollection()->load();功能,load()和分页无效。

感谢您的回复,sparcksoft:)

答案 1 :(得分:1)

如果您创建了自定义集合资源模型,则可能是您已覆盖或破坏了{{_renderLimit()}}的实现,这会根据当前页面和页面大小添加对基础SQL查询的限制

// Varien_Data_Collection_Db
protected function _renderLimit()
{
    if($this->_pageSize){
        $this->_select->limitPage($this->getCurPage(), $this->_pageSize);
    }

    return $this;
}

您可以发布收集资源模型中的相关部分,也许您的网格块?

答案 2 :(得分:0)

您可以使用此:

protected function _prepareCollection()
{
    $collection = Mage::getModel('vendor/model')->getCollection();
    $this->setCollection($collection);
    //
    return Mage_Adminhtml_Block_Widget_Grid::_prepareCollection();
}

在这种情况下,您可以使用自定义模型并分页显示

答案 3 :(得分:-2)

要解决此问题,您需要修改一个核心文件,请点击以下链接:

https://raisereview.com/wrong-grid-count-and-pagination-issue-in-magento-admin-grid/