在Gridview yii2 selectioncolumn undefined error中获取选中的行
Get selected row in Gridview yii2 selectioncolumn undefined error
我在 select 处理行并将密钥发送到控制器时遇到错误。
在 firebug 按钮点击事件中它显示类似这样的错误
Uncaught TypeError: Cannot read property 'selectionColumn' of undefined
这是我的 view
代码。很简单 gridview
<?= Button::widget([
'label' => 'Message',
'options' => ['class' => 'btn-danger','id' => 'message'],
]);
?>
</p>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'showOnEmpty'=>true,
'columns' => [
['class' => 'yii\grid\CheckboxColumn'],
[
'attribute' => 'event_id',
'label' => 'Event Title',
'value' => 'event.title'
],
[
'attribute' => 'fullName',
'label' => 'Name',
'value' => 'users.fullname',
],
],
]);
?>
这是我用于 onclick
事件
的脚本
$script = '
jQuery(document).ready(function() {
btnCheck = $("#message");
btnCheck.click(function() {
var keys = $("#w1").yiiGridView("getSelectedRows");
alert(keys);
$.ajax({
type: "POST",
url: "'.\yii\helpers\Url::to(['/checkin/message']).'",
dataType: "json",
data: {keylist: keys}
});
});
});';
$this->registerJs($script, \yii\web\View::POS_END);
如果我使用这个脚本,它似乎无法在按钮 onclick
事件上以某种方式工作,而不是那个,它工作正常
$this->registerJs('
$(document).ready(function(){
$("#w1 input[type=checkbox]").click(function(){
var keys = $("#w1").yiiGridView("getSelectedRows");
$.ajax({
type:"POST",
url: "../message", // your controller action
dataType: "json",
data: {keylist: keys},
success: alert(keys)
});
});
});
几乎相同,但在第二个脚本中,每次单击复选框时都会发送 ajax 请求。
我希望用户先 select 行,然后对按钮单击事件执行操作
希望你能理解
我知道这是一个很常见的错误,但我尝试了不同的选项并且 none 似乎有效
谢谢.......
当您看到一条错误消息时,您应该首先检查它发生的行。在那里您会找到最重要的信息。在我们的例子中,这是问题所在的代码行:
var keys=$("#w1").yiiGridView("getSelectedRows");
在这里,您的代码搜索了 ID 为 w1
的元素,并为此调用了 yiiGridView
。在函数内部某处引用了 selectioncolumn
,但引用了具有该名称的成员的元素未正确初始化。
我在 select 处理行并将密钥发送到控制器时遇到错误。
在 firebug 按钮点击事件中它显示类似这样的错误
Uncaught TypeError: Cannot read property 'selectionColumn' of undefined
这是我的 view
代码。很简单 gridview
<?= Button::widget([
'label' => 'Message',
'options' => ['class' => 'btn-danger','id' => 'message'],
]);
?>
</p>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'showOnEmpty'=>true,
'columns' => [
['class' => 'yii\grid\CheckboxColumn'],
[
'attribute' => 'event_id',
'label' => 'Event Title',
'value' => 'event.title'
],
[
'attribute' => 'fullName',
'label' => 'Name',
'value' => 'users.fullname',
],
],
]);
?>
这是我用于 onclick
事件
$script = '
jQuery(document).ready(function() {
btnCheck = $("#message");
btnCheck.click(function() {
var keys = $("#w1").yiiGridView("getSelectedRows");
alert(keys);
$.ajax({
type: "POST",
url: "'.\yii\helpers\Url::to(['/checkin/message']).'",
dataType: "json",
data: {keylist: keys}
});
});
});';
$this->registerJs($script, \yii\web\View::POS_END);
如果我使用这个脚本,它似乎无法在按钮 onclick
事件上以某种方式工作,而不是那个,它工作正常
$this->registerJs('
$(document).ready(function(){
$("#w1 input[type=checkbox]").click(function(){
var keys = $("#w1").yiiGridView("getSelectedRows");
$.ajax({
type:"POST",
url: "../message", // your controller action
dataType: "json",
data: {keylist: keys},
success: alert(keys)
});
});
});
几乎相同,但在第二个脚本中,每次单击复选框时都会发送 ajax 请求。
我希望用户先 select 行,然后对按钮单击事件执行操作 希望你能理解 我知道这是一个很常见的错误,但我尝试了不同的选项并且 none 似乎有效
谢谢.......
当您看到一条错误消息时,您应该首先检查它发生的行。在那里您会找到最重要的信息。在我们的例子中,这是问题所在的代码行:
var keys=$("#w1").yiiGridView("getSelectedRows");
在这里,您的代码搜索了 ID 为 w1
的元素,并为此调用了 yiiGridView
。在函数内部某处引用了 selectioncolumn
,但引用了具有该名称的成员的元素未正确初始化。