获取Gridview中的选定行yii2 selectioncolumn未定义错误

时间:2015-09-15 00:46:51

标签: javascript gridview yii2 yii2-advanced-app

我在选择行并向控制器发送密钥时遇到错误。

在按钮点击事件的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请求。

我希望用户先选择行,然后对按钮点击事件执行操作 希望你能理解 我知道它非常常见的错误,但我尝试了不同的选项,似乎没有任何工作

谢谢.......

1 个答案:

答案 0 :(得分:2)

当您看到错误消息时,首先应该检查它正在发生的行。在那里你会找到最重要的信息。在我们的例子中,这是问题所在的代码行:

var keys=$("#w1").yiiGridView("getSelectedRows");

在这里,您的代码搜索了一个id为w1且名为yiiGridView的元素。函数内部的某个地方引用了selectioncolumn,但引用了该名称的成员的元素未正确初始化。