2016-12-02 139 views
2

enter image description here如何设置要在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个记录。不知怎的,一旦我已经设置它,它会一直显示一个小于我设置的值。这是为什么?

+1

你可以改变页面大小http://stackoverflow.com/questions/30570159/how-to-set-page-size-in-gridview-in-yii2/30572032#30572032 – scaisEdge

+0

@scaisEdge我曾尝试那,但它没有显示我想要的数字。我一直表现得更少。例如,当我设置$ dataProvider-> pagination-> pageSize = 15 ;,它只会显示9行。它继续显示较少的行,然后我说 – CloudSeph

+0

为什么你检查page_size并不使用正常的yii2功能呢? .. – scaisEdge

回答

0

尝试使用

$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, 
    ]); 
+0

我做到了,但它只返回6条记录,而不是10条。为什么是这样? – CloudSeph

+0

你确定你有超过10个记录从db中恢复?如果只有6条记录可用,那么即使页面大小为10,它也可能显示6条记录。 – rushil

+0

是否可以显示控制器和查看页面的代码,以便获得更好的解决方案。 – rushil

0

尽量简单

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'], 
+0

中没有提到的扩展,但它仍然显示相同的问题。而不是硬编码的10,它只显示6条记录。只为你信息我有20,000以上的记录,所以这不是因为我有不到10条记录 – CloudSeph

+0

答案更新..为适当的dataProvider ..让我知道 – scaisEdge

相关问题