【问题标题】:Yii2: Get selected rows data from gridView checkbox columns into controllerYii2:从gridView复选框列中获取选定的行数据到控制器中
【发布时间】:2017-05-18 15:56:55
【问题描述】:

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

这是 index.php 的视图:

在视图的右侧,我有一个复选框列。 我有一个导出按钮。 我想将选定的名称(通过复选框选中)导出到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.')
        },
    });
}

并像这样设置导出按钮:

<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']);
?>`

任何帮助将不胜感激。谢谢

【问题讨论】:

  • 可能是 onclick="getRows()" 而不是 onclick="displayResult()" 会起作用。
  • @InsaneSkull 对不起,这是一个错误,我复制了错误的按钮代码,但我已经更新了问题的代码,谢谢:)
  • 和gridview的代码?
  • @InsaneSkull 已添加 gridView 的代码,请查看 :)

标签: javascript php yii2 kartik-v


【解决方案1】:

通过checkbox列上的inspect element,您可以找到行的namecheckbox name)。它包含 id 作为 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>

【讨论】:

  • 谢谢,当我在$.post({}) 中注释代码并添加警报(strvalue)时,添加打印输出值就可以了。但是当我取消注释$.post({}) 时,该按钮不起作用。而且我还编辑了url: FakturOutController / exportAction, url: 'faktur-out/export',但它也没有用。
  • 谢谢 :) 案件已经解决,我一直在更新问题 :)
  • 如何从视图中调用 getRows()?谁能解释一下。
  • 你能看看我的question 之一吗?
猜你喜欢
  • 2021-05-15
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多