【发布时间】:2017-02-10 23:34:01
【问题描述】:
我有一个从 CActiveDataProvider 提供的简单 CGridView。目前,我不确定这已经发生了多长时间,它不会在启用分页的视图中显示所有数据项。
我的标题显示“显示 9 个结果中的 1-7 个”,但没有更多页面的按钮。如果我将数据提供者的 pagenation 属性的 pageSize 设置为一个较小的数字,我最终会得到分页按钮,但它似乎在第一页上显示的项目比第二页少。例如,如果我将 CActiveDataProvider 的 pageSize 设置为 3,我会得到 2,2,3(每页上的项目),而不是我预期的 3,3,1。
如果我将 pageSize 设置为 9 到 11 之间的任何值(包括 9 到 11),则有些项目我看不到,因为我只看到一页并且并非所有项目都显示(如果我将 pageSize 设置为 9,则为“1-6 of 9” )。
$criteria=new CDbCriteria;
$criteria->with = array('registrations');
$criteria->addCondition('registrations.id IS NOT NULL');
$criteria->addCondition('registered = false');
$criteria->together = true;
$dataProvider = new CActiveDataProvider('Skier', array('criteria'=>$criteria));
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
array('name'=>'fullname', 'header'=>'Name'),
array(
'name'=>'programs_names',
'header'=>'Programs',
'value'=>'$data->programs_names',
),
<More items here>
)
));
有人知道什么会导致分页如此不稳定吗?
编辑:另外,将 CActiveDataProvider 更改为 CArrayDataProvider 工作正常,我得到 9 个结果中的 9 个。这暂时可行,因为我的数据集很小,但我宁愿弄清楚问题可能出在哪里。
$dataProvider = new CArrayDataProvider(Skier::model()->findAll($criteria));
【问题讨论】:
-
这个问题解决了吗?我有同样的问题。我怀疑这与执行两个不同计数的底层查询机制有关,并且由于某些极端情况或数据的特殊性,这些计数最终不匹配。
-
嗨,你找到 CActiveDataProvider 的任何解决方案了吗?我遇到了类似的问题,我不知道这里出了什么问题。
标签: php yii pagination cgridview cactivedataprovider