YII2 Gridview 不返回选定的行(未捕获的类型错误:无法读取未定义的 yii.gridView.js:140 的属性“selectionColumn”)
Posted
技术标签:
【中文标题】YII2 Gridview 不返回选定的行(未捕获的类型错误:无法读取未定义的 yii.gridView.js:140 的属性“selectionColumn”)【英文标题】:YII2 Gridview doesn't return selected rows (Uncaught TypeError: Cannot read property 'selectionColumn' of undefined yii.gridView.js:140) 【发布时间】:2015-02-26 17:47:35 【问题描述】:我正在使用从 gridview 中选择的键传递(通过 post)一个数组,但我总是得到相同的 URL 错误:
POST http://localhost/cngrx/web/index.php/ponenciaresumen/[object%20Object] 404 (Not Found)
似乎代码总是采用这种模式:path/myController/[object%20Object] 我设置的 url 无关紧要,代码generete 总是相同的 url,它不是我需要的。我的代码是这样的:
<script>
$(document).ready(function()
$('#MyButton').click(function()
var keys = $('#w1').yiiGridView('getSelectedRows');
$.post(
url: 'myController/myAction',
dataType: 'json',
data: keylist: keys
);
);
);
</script>
我已经尝试过绝对网址和亲戚之一,但没有。怎么可能??
这是我在 myController 中的操作:
public function actionMyAction( )
if (isset($_POST['keylist']))
$keys = \yii\helpers\Json::decode($_POST['keylist']);
// you will have the array of pk ids to process in $keys
// perform batch action on these keys and return status
// back to ajax call above
感谢您的提前!
【问题讨论】:
什么是ponenciaresumen? [object%20Object] 是什么? 【参考方案1】:见http://www.yiiframework.com/doc-2.0/yii-grid-checkboxcolumn.html
需要Class yii\grid\CheckboxColumn
var keys = $('#grid').yiiGridView('getSelectedRows');
【讨论】:
【参考方案2】:我认为当您将网格放入 pjax 容器时会发生这种情况?
如果你不使用 Pjax,你应该使用元素 id #w1 而不是 #grid。
Yii2 渲染这个脚本
jQuery(文档).ready(函数() jQuery('#modal-upload').modal("show":false); jQuery('#w0').yiiGridView("filterUrl":"/advanced/backend/web/index.php?r=state%2Findex","filterSelector":"#w0-filters input, #w0-filters select "); jQuery('#w1').yiiGridView("filterUrl":"/advanced/backend/web/index.php?r=state%2Findex","filterSelector":"#w1-filters input, #w1-filters select "); jQuery('#w1').yiiGridView('setSelectionColumn', "name":"selection[]","multiple":true,"checkAll":"selection_all"); jQuery('#w2').yiiGridView("filterUrl":"/advanced/backend/web/index.php?r=state%2Findex","filterSelector":"#w2-filters input, #w2-filters select "); );当我在我的 GridView 上使用 Pjax 时,我没有得到任何值或键 但是当我使用元素 id #w2 而不是 #grid 时,我得到了密钥。
你可以在你的视图上使用它
$script = '
jQuery(document).ready(function()
btnCheck = $("#btn-check");
btnCheck.click(function()
var keys = $("#w2").yiiGridView("getSelectedRows");
alert(keys);
$.ajax(
type: "POST",
url: "'.\yii\helpers\Url::to(['/controller/action']).'",
dataType: "json",
data: keylist: keys
);
);
);';
$this->registerJs($script, \yii\web\View::POS_END);
【讨论】:
在AppAsset.php
上,添加此属性:public $jsOptions = ['position' => \yii\web\View::POS_HEAD];
,这样jQuery 将在页面的开头加载。然后,如果您使用 Pjax,请将选择器更改为 $('.grid-view')
【参考方案3】:
查看您的代码源并检查复选框是否有 id "w1" 或 "w0" .. 默认情况下它是 'w0' 并且我能够解决我的问题:
var keys = $('#w0').yiiGridView('getSelectedRows');
【讨论】:
【参考方案4】:$('#MyButton').click(function()
var keys = $('#w0').yiiGridView('getSelectedRows');
$.post("index.php?r=myController/myAction", keylist: keys, function(result)
$("span").html(result);
);
);
【讨论】:
虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。不鼓励仅使用代码回答。以上是关于YII2 Gridview 不返回选定的行(未捕获的类型错误:无法读取未定义的 yii.gridView.js:140 的属性“selectionColumn”)的主要内容,如果未能解决你的问题,请参考以下文章
Yii2:在 GridView 和 DetailView 中删除空值的“(未设置)”
如何使用 JavaScript 或 Jquery 选择 GridView 中选定的行项的子项?