2016-12-02 134 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

相關問題