Yii2 使用 javascript 从 Gridview 按钮获取值

Yii2 get value from Gridview button using javascript

我是 Yii2 框架的新手,我开发了一个模块,可以使用 Yii2 高级框架上传和显示从服务器上传的文件。我完成了上传文件的功能,但是。在我的其他功能中需要将 pdf 文件之类的文件显示到 jquery ui dialog.My 问题是当我单击按钮以显示上传的 pdf 文件时无法获取按钮的值.先谢谢大家了。

// Here is Gridview code in Index where my button Exist.
 <?= DynaGrid::widget([
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        // 'ntraining_id',
        'ctraining_description',
        //'dtraining_datefrom',
         [
            'attribute'=>'dtraining_datefrom',
            'filterType'=>GridView::FILTER_DATE,
            'format'=>'raw',
            'filterWidgetOptions'=>[
                'pluginOptions'=>['format'=>'yyyy-mm-dd']
            ],
         ],
       // 'dtraining_dateto',
         [
         'attribute'=>'dtraining_dateto',
         'filterType'=>GridView::FILTER_DATE,
         'format'=>'raw',
         'filterWidgetOptions'=>[
          'pluginOptions'=>['format'=>'yyyy-mm-dd']
         ],
         ],
        'ctraining_numberhours',
        'ctraining_type',
        'ctraining_conducted',
        //'ctraining_attachment',

        [
        'attribute'=>'ctraining_attachment',
        'format' => 'raw',
        'label' => 'View Profile',
        'value' => function ($model){

                    return  Html::a(Yii::t('app', ' {modelClass}', [
                    'modelClass' => $model->ntraining_id,
                    'header' => 'raw',

                    ]), ['TblTrainingController/Listeaffecter'], ['class' => 'btn btn-success opener', 'id'=>'opener', 'data' => $model->ntraining_id,]);   

            },
        ],

        //'id',

        ['class' => 'yii\grid\ActionColumn'],
        ],
        'storage'=>DynaGrid::TYPE_COOKIE,
        'theme'=>'panel-info',
        'gridOptions'=>[
            'dataProvider' => $dataProvider,
            'id' => 'grid',
            'filterModel' => $searchModel,
            'panel'=>['heading'=>'<h3 class="panel-title">LEARNING AND DEVELOPMENT (L&D) INTERVENTIONS/TRAINING PROGRAMS ATTENDED</h3>'],
        ],
    'options'=>['id'=>'dynagrid-1'], // a unique identifier is important
]); ?>

这是javascript代码

$this->registerJs("$(function(){

    $('.opener').click(function(e) {

            alert(e.data);
           //alert($(this).val());
            e.preventDefault();
            ViewPDfAttach();

    });

});");

Here is the image of my interface that display null when I click the button from gridview

调用 alert(e.data); 表示您想从函数回调中获取变量 e 的值。

虽然调用 alert($(this).val()); 意味着您想从元素中的 value 属性中获取值,但在您的元素中找不到 value 属性。

根据您的元素结构,如果您想从 data 属性中获取值,您可以这样做:

alert($(this).attr('data'));

如果你的元素有类似 <a data-hello="Hello there">Click me</a> 的结构,你可以用这个提醒:

alert($(this).data('hello'));

查看此处了解更多信息: