首页 文章

Yii2:从gridView复选框列中选择行数据到控制器

提问于
浏览
5

我在Yii2项目中查看了页面( index.php ),我正在使用Kartik gridView来显示数据

这是来自index.php的视图:

enter image description here

在视图的右侧,我've a checkbox column. And I'是一个 Export 按钮 . 我想将所选名称(由复选框选中)导出到 name.txt 文件中 .

我终于制作了导出功能,但我不知道如何将所选数据从视图中获取到控制器中 .

我尝试过从很多论坛获得的建议,例如:

我把这个javascript代码放在我的视图中 index.php

<script>
function getRows(){
    var keys = $('#grid').yiiGridView('getSelectedRows');
    $.post({
        url: FakturOutController / exportAction,
        dataType: 'json',
        data: {keylist: keys},
        success: function(data) {
            alert('I did it! Processed checked rows.')
        },
    });
}

并设置 export 按钮,如下所示:

<p>
    <button type="button" onclick="getRows()" class="btn btn-success">Export</button>
</p>

但我没有得到任何东西,点击时按钮没有显示任何动作/反应 .

这是index.php中的gridView代码:

`<?php Pjax::begin(); ?>
<?=
GridView::widget([
    'dataProvider' => $dataProvider,
    'tableOptions' => ['class' => 'table table-hover'],
    'columns' => [
        ['class' => 'yii\grid\SerialColumn',
            'header' => 'No',
        ],
        [
            'label' => 'Name',
            'value' => function($data) {
            return $data->name;
    }
        ],
        ['class' => '\kartik\grid\CheckboxColumn'],
    ],
    'toolbar' => [
        ['content' =>
            Html::a('<i class="glyphicon glyphicon-repeat"></i>', ['index'], ['data-pjax' => false, 'class' => 'btn btn-default', 'title' => 'Reset Grid'])
        ],
        '{export}',
        '{toggleData}'
    ],
    'panel' => [
        'heading' => '<i class="glyphicon glyphicon-align-left"></i>&nbsp;&nbsp;<b>Data</b>',
        'before' => '', //IMPORTANT
    ],
]);
?>
<?php Pjax::end(); ?>

<?=
    Html::a('<i class=" glyphicon glyphicon-export"></i> Export', ['export', 'userId' => $userId], ['class' => 'btn btn-success']);
?>`

任何帮助,将不胜感激 . 谢谢

1 回答

  • 1

    通过 inspect elementcheckbox 列上,您可以找到 name 的行( checkbox name ) . 它包含 id as value .

    从中可以找到选择了多少行 .

    在我的情况下,我在复选框名称中得到' selection []' .

    恩 .

    <input type="checkbox" class="kv-row-checkbox" name="selection[]" value="1">
    

    我写了jquery代码来获取下面的选定行 .

    <script>
    
        function getRows()
        {
            var strvalue = "";
            $('input[name="selection[]"]:checked').each(function() {
                if(strvalue!="")
                    strvalue = strvalue + ","+this.value;
                else
                    strvalue = this.value;
            });
         // strvalue contain selected row by comma separated      
        $.post({
            url: FakturOutController / exportAction,
            dataType: 'json',
            data: {keylist: keys},
            success: function(data) {
                alert('I did it! Processed checked rows.')
            },
    
    
           });
        }
        </script>
    

相关问题