php - yii2:Gridview 在表单 View 中的自定义分页

标签 php gridview pagination yii2

我在 _form.php 文件中包含了 Gridview 小部件,它运行良好。问题是过滤器和分页。

<?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) Define model 2) Fill it up with data from $_GET 3) Pass $model->search() to grid

如果过滤器仍然不起作用,您可以提供模型中的代码。

关于php - yii2:Gridview 在表单 View 中的自定义分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28327446/

相关文章:

php - Codeigniter - 以管理员身份编辑用户

设置 20 种单元格类型后 PhpExcel 停止工作

c# - 在 GridView 中为复选框列生成新列

c# - 如何在 GridView 的RowCommand方法中找到标签控件?

java - Struts 2 显示标签排序和分页问题

javascript - 在 iframe 中加载 url 并添加类

php - 想要使用 composer 添加新插件而不是更新所有插件

c# - 如何在WPF中的左侧添加一个复选框

ruby-on-rails - Rails - 主动管理对索引页进行分页

php - 推荐一个分页程序 AJAX PHP