问题描述
当我使用以下代码时,它会覆盖操作列删除/更新链接.
When i use the below code it overrides the action-column delete/update links.
'rowOptions' => function ($model, $key, $index, $grid) {
return [
'id' => $model['id'],
'onclick' => 'location.href="'
. Yii::$app->urlManager->createUrl('accountinfo/update')
.'?id="+(this.id);',
];
},
由于我有很多列,最好在一个地方指定链接 url,而不是在每一列中使用以下代码:
As I have many columns it would be good to specify link url in one place instead of using the below code in each column:
'value' => function ($data) {
return Html::url('site/index');
}
那么有没有什么最好的方法可以在 GridView 中为除操作列之外的整行提供链接?
So is there any best way to give link for whole row in GridView except action column?
完整的网格视图
GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'rowOptions' => function ($model, $index, $widget, $grid) {
if ($widget == 1)
return [
'id' => $model['id'],
'onclick' => 'location.href="'
. Yii::$app->urlManager->createUrl('accountinfo/update')
. '?id="+(this.id);'
];
},
'columns' => [
['class' => 'yiigridSerialColumn'],
// 'id',
'f_name',
'l_name',
'address',
'country',
'state',
'city',
'pincode',
[
'attribute' => 'status',
'value' => function ($model, $key, $index, $column) {
return $model->status == '1' ? 'Enabled' : 'Disabled';
},
'filter' => [1 => 'Enabled', 0 => 'Disabled'],
],
'card',
'note',
'balance',
'is_new',
[
'attribute' => 'is_new',
'value' => function ($model, $key, $index, $column) {
return $model->is_new == '1' ? 'Yes' : 'No';
},
'filter' => [1 => 'Yes', 0 => 'No'],
],
[
'class' => 'yiigridActionColumn',
'template' => '{update} {delete}',
],
],
]);
推荐答案
你可以试试这个.只要用户单击未被另一个元素覆盖的 td 元素,它就会使整行可点击.因此,操作列也是可点击行的一部分,但不是字形.
You could try this. It will make the whole row clickable as long as the user clicks on a td element that is not covered from another element. So also the action column is part of the clickable row, however, not the glyphicons.
<?= GridView::widget([
...
'rowOptions' => function ($model, $key, $index, $grid) {
return ['data-id' => $model->id];
},
...
]); ?>
<?php
$this->registerJs("
$('td').click(function (e) {
var id = $(this).closest('tr').data('id');
if(e.target == this)
location.href = '" . Url::to(['accountinfo/update']) . "?id=' + id;
});
");
另请参阅 event.target 的文档:
目标属性可以是为事件注册的元素或它的后代.将 event.target 与这是为了确定事件是否因事件而被处理冒泡.这个属性在事件委托中非常有用,当事件泡沫.
The target property can be the element that registered for the event or a descendant of it. It is often useful to compare event.target to this in order to determine if the event is being handled due to event bubbling. This property is very useful in event delegation, when events bubble.
这篇关于GridView 行作为链接,Yii2 中的操作列项除外的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!



大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)