2016-12-02 6 views
2

enter image description hereКак установить количество элементов, которые будут отображаться в виде сетки yii2?

Controller Код:

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 и DataProvider

, например:

$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 записей, то может отображаться 6 записей, даже если размер страницы равен 10 – 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

 Смежные вопросы

  • Нет связанных вопросов^_^