Yii2 Pjax GridView动作按钮问题

use*_*609 3 ajax gridview pjax yii2

我正在尝试使用Pjax创建Ajax GridView.一切都工作正常,除了视图,更新和删除按钮不是AJAX.代码是:

<?php yii\widgets\Pjax::begin(['id' => 'demo']); ?>
<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        'id',
        'name',


        ['class' => 'yii\grid\ActionColumn'],
    ],

]); ?>
<?php yii\widgets\Pjax::end(); ?>
Run Code Online (Sandbox Code Playgroud)

问题是删除,查看和更新​​的链接具有属性data-pjax = 0,它禁用了AJAX功能.我无法找到如何设置它data-pjax = 1.

Ali*_*our 6

你必须这样做:

对于删除操作

1-更改您的删除操作,如下所示:

public function actionDelete($id) {
    $this->findModel($id)->delete();
    if (Yii::$app->getRequest()->isAjax) {
        $dataProvider = new ActiveDataProvider([
            'query' => ModelName::find(),
            'sort' => false
        ]);
        return $this->renderPartial('index', [
                    'dataProvider' => $dataProvider
        ]);
    }
    return $this->redirect(['index']);
}
Run Code Online (Sandbox Code Playgroud)

2-在网格视图中:

['class' => 'yii\grid\ActionColumn',
        'buttons' => [
            'delete' => function ($url, $model) {
                return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [
                            'title' => Yii::t('yii', 'Delete'),
                            'data-pjax'=>'w0',
                ]);
            }
        ]
    ],
Run Code Online (Sandbox Code Playgroud)

现在,它适用于Pjax.

笔记

  • 我的代码deleteAction()可能会降低性能.你可以自己写.
  • w0通常是默认的ID PJax.您可以添加ID PJax并在其中写入.
  • 对于UpdateView,这是相同的,但您需要更改显示updateview查看的方式.
  • 强烈建议您查看Yii2官方PJax文档:http://www.yiiframework.com/doc-2.0/yii-widgets-pjax.html

  • @user3658609 没有意义花时间帮助这个人 - 当需要帮助时他会做出反应,但大多数问题都没有反馈。很多未解决的问题。 (2认同)