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'));
查看此处了解更多信息:
我是 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'));
查看此处了解更多信息: