GridView row as link, except action column items in Yii2(GridView 行作为链接,Yii2 中的操作列项除外)
问题描述
当我使用以下代码时,它会覆盖操作列删除/更新链接.
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 中的操作列项除外的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:GridView 行作为链接,Yii2 中的操作列项除外
- 正确分离 PHP 中的逻辑/样式 2021-01-01
- SoapClient 设置自定义 HTTP Header 2021-01-01
- 从 PHP 中的输入表单获取日期 2022-01-01
- 带有通配符的 Laravel 验证器 2021-01-01
- Mod使用GET变量将子域重写为PHP 2021-01-01
- PHP Count 布尔数组中真值的数量 2021-01-01
- 如何定位 php.ini 文件 (xampp) 2022-01-01
- Laravel 仓库 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- 没有作曲家的 PSR4 自动加载 2022-01-01