控制器代碼:
public function actionIndex() {
$searchModel = new ProductSearch();
if (Yii::$app->request->get('per-page') !== NULL) {
$searchModel->_pageSize = Yii::$app->request->get('per-page');
}
if ($searchModel->load(Yii::$app->request->post())) {
$searchModel->_pageSize = intval(Yii::$app->request->post()['ProductSearch']['_pageSize']);
$_SESSION['page_size'] = $searchModel->_pageSize;
}
if (isset($_SESSION['page_size']))
{
$dataProvider = $searchModel->search(Yii::$app->request->queryParams, null ,$_SESSION['page_size']);
}
else
{
$dataProvider = $searchModel->search(Yii::$app->request->queryParams, null, 20);
}
$dataProvider->pagination->pageSize=10;
$this->layout = 'main_ecommerce';
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
查看代碼:
if (isset($_SESSION['page_size']))
{
$searchModel->_pageSize = $_SESSION['page_size'];
}
Pjax::begin();
$form = ActiveForm::begin();
echo $form->field($searchModel, '_pageSize', [
'inputOptions' => [
'placeholder' => 'records',
'style' => 'overflow-x: auto;',
'class' => 'form-control input-xsmall input-inline' ],
])->label(Yii::t('app', 'Records : '))
->dropDownList(['10'=> 10, '20' => 20, '50' => 50], ['onchange'=>"this.form.submit();"]);
ActiveForm::end();
Pjax::end();
echo $searchModel->_pageSize;
?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'pager' => [
'options'=>['class'=>'pagination'],
'prevPageLabel' => Html::tag('i', "", ['class' => 'fa fa-angle-left']),
'nextPageLabel' => Html::tag('i', "", ['class' => 'fa fa-angle-right']),
'firstPageLabel'=>Html::tag('i', "", ['class' => 'fa fa-angle-double-left']),
'lastPageLabel'=> Html::tag('i', "", ['class' => 'fa fa-angle-double-right']),
],
'columns' => [
['class' => 'yii\grid\SerialColumn'],
圖爲在GridView僅顯示記錄30行。我如何調整這一點,以便我可以顯示,例如每頁50個記錄。不知怎的,一旦我已經設置它,它會一直顯示一個小於我設置的值。這是爲什麼?
你可以改變頁面大小http://stackoverflow.com/questions/30570159/how-to-set-page-size-in-gridview-in-yii2/30572032#30572032 – scaisEdge
@scaisEdge我曾嘗試那,但它沒有顯示我想要的數字。我一直表現得更少。例如,當我設置$ dataProvider-> pagination-> pageSize = 15 ;,它只會顯示9行。它繼續顯示較少的行,然後我說 – CloudSeph
爲什麼你檢查page_size並不使用正常的yii2功能呢? .. – scaisEdge