簡體   English   中英

yii2:表單視圖中Gridview的自定義分頁

[英]yii2:Custom Pagination for Gridview in form view

我在_form.php文件中包含了Gridview小部件, _form.php文件運行良好。 問題是過濾器和分頁。

<?php
$dataProvider = new ActiveDataProvider([
    'query' => \app\models\ServiceCharges::find(),
    'pagination' => [
        'pageSize' => 5,
    ],
]);

 ?>
    <?php  
   $searchModel = New \app\models\ServiceChargesSearch(); 
   $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

   ?>

        </div>
</div>
<div>
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

           'id',
           'service_name',                
           'room_category',
           'charges_cash',
           'charges_cashless',

            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>

    </div> 

如果我將$dataprovider分頁部分放在$searchmodel下面,則分頁工作正常,但是過濾器不起作用,反之亦然。

如何在_form.php中同時使用過濾器和分頁。

任何解決方案將不勝感激。

謝謝

我對Yii2沒有經驗,但如果它與1相似

你為什么兩次聲明dataProvider 我想第一個是能夠自定義頁面大小。

那么會發生什么呢?您使用一個數據提供程序來設置分頁,然后將另一個數據提供程序傳遞給表。

其次我不知道你的模型在里面看起來如何......

因為我可以看到search()方法返回一個dataProvider ,你應該改變那里的分頁。

或者我認為你可以在search()方法返回dataProvider之后立即更改它:

$searchModel = New \app\models\ServiceChargesSearch(); 
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->pagination->pageSize=5;

因此,您不需要之前聲明過的第一個dataProvider實例。

至於過濾器,我不知道它是如何完全表現你的ServiceChargesSearch::search功能

但在Yii1中你通常會:

1)定義模型2)用$_GET數據填充3)將$model->search()傳遞給網格

如果過濾器仍然不起作用,您可以從模型中提供代碼。

我在控制器中這樣做:

public function actionIndex()
{
    $searchModel = new YourModels();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    $dataProvider->pagination->pageSize = 10;

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM