我有一个从 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));