問題描述
當我使用以下代碼時,它會覆蓋操作列刪除/更新鏈接.
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模板網!