当前位置: 首页 > 知识库问答 >
问题:

Yii2:如何在Gridview之外呈现Pjax内容,由Gridview按钮触发

石正卿
2023-03-14

对于那些有这个问题的人,我会帮你省去一些头痛。

总之:Pjax链接选择器必须指向一个

我遇到的问题是使用Pjax更新Gridview小部件之外的内容。我使用Html::button添加了一个自定义按钮,但pjax由于未知原因失败。

在gridview小部件上测试pjax时,使用'class'=本机按钮

收到此错误:未捕获$。fn。pjax或$。pjax。单击需要一个锚元素。

文件位置:app/views/default/pjax示例。php

<?php Pjax::begin([
    'id'=>'p0',
    'timeout' => false,
    //Selector must target the <a> anchor.      
    'linkSelector'=>'.action-select', 
]); ?>
<?php Pjax::end(); ?>
$data = [
    ['step_id' => 1, 'step_name' => 'Step A'],
    ['step_id' => 2, 'step_name' => 'Step B'],
    ['step_id' => 3, 'step_name' => 'Step C'],
];
$dataProvider = new ArrayDataProvider([
    'allModels' => $data,
    'sort' => [
       'attributes' => ['id', 'name'],
    ],
]);
echo GridView::widget([
    'dataProvider' => $dataProvider,
    'tableOptions' => [
        'class' => 'table',
    ],
    'columns' => [
        'step_id',
        'step_name',
        [
            'class' => 'yii\grid\DataColumn',
            'label' => 'Button-1',
            'format'=> 'raw',
            'value' => function ($url, $data) {
                return Html::a(
                    '<span class="glyphicon glyphicon-flash"></span>',
                    Url::to(['default/select', 'id'=>$data['step_id']]),
                    [
                        'class' => 'btn btn-danger btn-xs action-select',
                        'data-pjax'=> 'p0', // We must specify the pjax ID.
                    ]
                );
            },
        ],
        [
            'class' => 'yii\grid\ActionColumn',
            'template' => '{select}',
            'header' => 'Button-2',
            'buttons' => [
              'select' => function ($url, $data) {
                return Html::Button(
                  '<span class="glyphicon glyphicon-pencil"></span>',
                  ['value' => Url::to(['default/select', $data['step_id']]),
                    'class' => 'btn btn-danger btn-xs action-select',
                    'data-pjax'=> 'p0',
                ]);
              },
            ],
        ],
    ],
]);

文件位置:app/控制器/defaultController.php

public function actionSelect()
{
    $random_val = 'Rand_01: ' . rand(10,100);
    return $random_val;
}

public function actionPjaxExample()
{
    $random_val = 'Rand_02: ' . rand(10,100);
    return $this->render('pjax-example', [
        'random_val' => $random_val
    ]);
}

共有1个答案

楚志强
2023-03-14

我使用这个代码没有链接选择器。而且也没有data-pjax=0

视图/平移/index.php

<?php Pjax::begin(['id' => 'translate-grid', 'timeout' => false, 'enablePushState' => true]) ?>
# here you form
<?php $form = ActiveForm::begin(['action'=> Url::current(),'id'=>'edit-form']) ?>
      <?= $form->field($model, 'word')->textInput() ?>
<?php ActiveForm::end() ?>
<?= GridView::widget([
           'id' => 'data-grid',
           'dataProvider' => $dataProvider,
           'columns'      => [
              [
                'attribute' => 'title',
                'format'    => 'raw',
                'value'     => function ($model) {
                    return Html::a($name, [                                                                    
                        'id' => $model->id
                    ]);
                 },
              ],
           ]
     ]) ?>
<?php Pjax::end() ?>

控制器/传输控制器。php

public function actionIndex($id = false)
{
    $searchModel = new TranslateSearch();
    $model       = $id ? $this->findModel($id) : new Translate();

    if ($model->load(Yii::$app->request->post())) {
        if ($model->save()) {
            return $this->redirect(Yii::$app->request->getReferrer());
        }
    }

    return $this->render('index', [
        'model'        => $model,
        'searchModel'  => $searchModel,
        'dataProvider' => $searchModel->search(Yii::$app->request->get()),
    ]);
}
 类似资料:
  • > 按常规声明代码 Page language=“vb”autoeventwireup=“false”masterpageFile=“~/site.master”codeBehind=“RetailCompetition.aspx.vb”inherits=“company.applications.production.ui.RetailCompetition” 事件

  • 我正在使用Kartik Gridview。导出工作正常,但不会导出摘要数据,而是在视图中显示良好。我还想更改下载文件的文件名。 我尝试过这个代码,但似乎没有任何效果 也就是说,我在

  • 本文向大家介绍yii2.0之GridView自定义按钮和链接用法,包括了yii2.0之GridView自定义按钮和链接用法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了yii2.0之GridView自定义按钮和链接用法。分享给大家供大家参考。具体实现方法如下: 运行效果如下图所示: 希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

  • 我在一个页面上有两个GridView,每个GridView都在代码隐藏中被修改为使用RowDataBound进行分组,在RowDataBound中,我为每个分组添加了一个文本框和按钮。该按钮将添加一个单击事件。此外,每个GridView都位于UpdatePanel中。 为了解决RowDataBound项和动态控件的回发问题,我添加了一个简单的响应。重定向到同一页。这段代码可以工作,但按钮会在Gri

  • 如何禁用kartik gridview中的pdf导出属性? 我已经安装了kartik gridview,它给了我以下错误。 找不到类“\kartik\mpdf\Pdf”,它是Pdf导出功能所必需的。要包含PDF导出,请按照以下安装步骤操作。如果不需要PDF导出功能,请不要将“PDF”作为格式包含在“导出”属性中。您可以将“导出”设置为false以禁用所有导出功能。 请确保您已安装yii2-mpdf

  • 我真的不知道如何获得这个实现,即获取一个数据,它将是动态的,并用上面的样式表示。 我衷心感谢你抽出时间。 我得到了 原因:controllers.home_pageController处的java.lang.nullPointerException。controlers.home_pageController处的getGrid(home_pageController.java:85)。start(