我在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");
}
答案 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/