Yii2 получить значение с помощью кнопки Gridview, используя JavaScript - PullRequest
0 голосов
/ 21 февраля 2019

Я новичок в Yii2 Framework, я разработал модуль, который будет загружать и отображать файл, загруженный с сервера, используя Yii2 advance Framework.Я выполнил функцию для загрузки файла, однако.В другой моей функции, которая должна отображать файл как файл pdf в диалоге jquery ui. Моя проблема в том, что я не могу получить значение кнопки, когда нажимаю кнопку, чтобы отобразить загруженный файл 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();

    });

}); ");

Вот изображение моего интерфейсакоторые отображаются нулевыми, когда я нажимаю кнопку из вида сетки

1 Ответ

0 голосов
/ 21 февраля 2019

Вызов 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'));

См. Здесь для получения дополнительной информации:

...