【问题标题】:how to change grid view through Ajax? yii2如何通过 Ajax 更改网格视图? yii2
【发布时间】:2015-04-01 08:19:10
【问题描述】:

首先我正在使用 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 请求吗?

【问题讨论】:

    标签: php ajax gridview yii2 pjax


    【解决方案1】:

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

    use yii\widgets\Pjax;
    
    <?php Pjax::begin(); ?>
    
    // Place GridView code here
    
    <?php Pjax::end(); ?>
    

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

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

    如果附加pjax,内容将被动态替换,无需重新加载页面。

    官方文档:

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-03
        • 1970-01-01
        相关资源
        最近更新 更多