如何通过Ajax更改网格视图? yii2

时间:2015-04-01 08:19:11

标签: php ajax gridview yii2 pjax

首先,我正在使用yii2.0框架。

是的,我有一个从我的数据库中提取数据的gridview。它目前有效,如果我使用任何搜索,它将使用新数据重新加载页面。

但是我现在已经创建了一些下拉列表类别。基本上有三层类别,所以主类别子类别和子类别。目前,我有两个ajax请求,当下拉列表更改时,将填充子和子类别。 (它填充了我的数据库中的类别。)

现在我希望gridview显示链接到子类别的案例。因此,当我选择我的第一个类别然后选择我的第二个和子类别时,gridview会显示与其相关的内容。

目前,我的控制器为网格视图呈现searchModel + dataProvider,如下所示:

public function actionIndex()
{
    $searchModel = new CaseSearch();  
    $allCategory = Category::find()->all();

    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

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

在我看来它用这个::

显示数据
<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        'case_id',
        'name',
        'judgement_date',
        'year',
        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>

我应该如何实现这一目标?我应该创建一些_grid.php然后我可以从我的视图中呈现并在那里发送ajax请求吗?

2 个答案:

答案 0 :(得分:3)

实现此功能的最简单方法是使用内置GridView小部件包装Pjax,如下所示:

use yii\widgets\Pjax;

<?php Pjax::begin(); ?>

// Place GridView code here

<?php Pjax::end(); ?>

从js中你可以触发表单提交:

$('.grid-view-selector').yiiGridView('applyFilter');

如果附加了pjax,则会动态替换内容,而不会重新加载页面。

官方文档:

答案 1 :(得分:1)

我可能会使用GridView $ filterSelector。 并为您的自定义类别dropDown添加选择器。 您需要为SearchModel添加类别属性。 在最后 - 你会得到过滤器,你自定义字段添加到标准