如何设置要在yii2网格视图中显示的项目数量?
问题描述:
控制器代码:
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个记录。不知怎的,一旦我已经设置它,它会一直显示一个小于我设置的值。这是为什么?
答
尝试使用
$dataProvider->pagination->pageSize=10;
中的actionIndex返回searchmodel之前和数据提供程序
例如:
$searchModel = new UserMasterSearch();
$dataProvider = $searchModel->search(Yii::$app->request->post());
$dataProvider->pagination->pageSize=10;
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
答
尽量简单
public function actionIndex() {
$searchModel = new ProductSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->pagination->pageSize=10;
$this->layout = 'main_ecommerce';
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
和观点
<?= 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'],
你可以改变页面大小http://*.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