我在Yii有一个项目,其中有一个CGridView
,默认情况下每页显示10条记录。如何将其设置为100条记录?
答案 0 :(得分:9)
您可以在模型的搜索功能中进行配置,如下所示:
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id,true);
$criteria->compare('start_year',$this->start_year,true);
$criteria->compare('end_year',$this->end_year,true);
$criteria->compare('ref_lang_id',$this->ref_lang_id);
$criteria->compare('submitted_at',$this->submitted_at,true);
$criteria->compare('ref_submitted_user_id',$this->ref_submitted_user_id,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination' => array(
'pageSize' => 30,
),
));
}
答案 1 :(得分:7)
在您的视图中查找呈现CGridView
窗口小部件的位置,并配置数据提供者的pagination
属性:
$this->widget('zii.widgets.CGridView', array(
'dataProvider' => array(
/* other options for the data provider... */
'pagination' => array('pageSize' => 100),
),
/* other options for the grid view... */
));
答案 2 :(得分:0)
您可以使用下拉列表配置每页的项目。
创建这样的部分。请按照以下步骤操作。
为部分定义自定义模板"显示1-10 of 128"屏幕截图部分。
使用Gridview属性数组添加此代码。
'summaryText' => 'Displaying {start}-{end} of {count} result(s). ' .
CHtml::dropDownList('pageSize', $pageSize, Yii::app()->params['pageSizeOptions'], array('class' => 'change-pageSize')) .' rows per page',
在视图顶部添加此行
$pageSize = Yii::app()->user->getState('pageSize', Yii::app()->params['defaultPageSize']);
在同一视图中添加更改事件。
jQuery(function ($) {
$('body').on('change','.change-pageSize', function () {
$.fn.yiiGridView.update('my-grid', {data: {pageSize: $(this).val()}
})
});
});
在模型搜索功能中添加此行,以在活动数据提供程序中设置所选行数。
$pageSize = Yii::app()->user->getState('pageSize', Yii::app()->params['defaultPageSize']);
然后在控制器中接收通过ajax从视图发送的页面大小参数。在控制器中使用以下代码行。
if (isset($_GET['pageSize'])) {
Yii::app()->user->setState('pageSize', (int) $_GET['pageSize']);
}
在Params.php中添加此配置
'defaultPageSize' => 20,
'pageSizeOptions' => array(-1 =>'All' , 10 => 10, 20 => 20, 50 => 50, 100 => 100, 500 => 500),
这对我有效!