Yii2获取按钮上的每个GridView行的值单击(在一个按钮上单击获取多个值)

时间:2015-06-11 02:24:33

标签: javascript php jquery gridview yii2

我有一个GridView,在我的ActionColumn中,每行都有一个“查看工资单”按钮。如果用户尚未创建任何薪资单,将会看到“创建薪资单”而不是“查看薪资单”。我在GridView之外还有一个名为“Approve Payslips”的按钮。默认情况下,此按钮处于禁用状态,仅当所有按钮指示“查看薪资单”时才会启用此按钮。 enter image description here

PHP
这是“Approve Payslips”按钮的代码:

<?php echo Html::button('Approve Payslips', ['value' => 'approve-w', 'class' => 'btn btn-warning btn-responsive approve-w', 'style' => 'display:none', 'onclick'=>'approveWeekly(value)']); ?>

的JavaScript
我尝试了这个,但它不起作用,因为它传递了一个ID,我有多个值传递:

function approveWeekly(id){
    $.ajax({
        url: 'index.php?r=periods/approveweekly',
        dataType: 'json',
        method: 'GET',
        data: {id : id},
        success: function (data, textStatus, jqXHR) {
           $.pjax.reload({container:'#w_gridview'});
        },
        error: function (jqXHR, textStatus, errorThrown) { 
            alert("error");
        }
    });
}

也尝试了这个,但它没有再次工作,因为我刚从“电子邮件选择的薪资单”按钮获取此代码(查看上面的照片):

function approveBiMonthly(){       
    var keylist = $('#b_gridview').yiiGridView('getSelectedRows');
    //alert(keylist);
    keylist = '\''+keylist+'\'';
    $.ajax({
        url: 'index.php?r=periods/approvebimonthly', // your controller action
        dataType: 'json',
        method: 'GET',
        data: {keylist: keylist},
        success: function (data, textStatus, jqXHR) {
        //alert(keylist);
        },
        error: function (jqXHR, textStatus, errorThrown) { 
            alert('error');
        }
    });
}

任何人都有任何想法或知道如何实现这种功能?我不知道在jQuery代码中放​​什么了。我只是个新手。希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:0)

我认为您正在混合行数据操作(“查看薪资单”和“创建薪资单”),以及多行操作(“批准薪资单”)。由于您在网格外部有“批准薪资单”,我假设您要批准在网格中选择的所有行,对吧?

这是一个可能的解决方案,并使用Yii2提供的jQuery。

<强>假设

我假设您使用[yii\grid\CheckboxColumn]api link)来生成CheckBox列。

<强>的JavaScript

添加以下功能,一次性批准多个ID:

function approveSelected(selectedRows){
    for (var i = 0; i < selectedRows.length; i++) {
        approveWeekly(selectedRows[i]);
    }
}

PHP代码

然后你的PHP调用将改为使用上面的新函数:

<?php echo Html::button('Approve Payslips', ['value' => 'approve-w', 'class' => 'btn btn-warning btn-responsive approve-w', 'style' => 'display:none', 'onclick'=>'approveSelected($("#grid").yiiGridView("getSelectedRows"))']); ?>

<强>旁注

如果您对获取当前页面上显示的全部 GridView模型感兴趣,可以使用以下代码 PHP 代码访问它们:

$dataProvider->getModels()

以下是Yii2 Api documentation

的链接

答案 1 :(得分:0)

尝试查看此帖子。 checkboxColumn 但这只能返回 1值。我不知道如何获得所有价值......

这是我目前的最大问题。我还要弄清楚如何获得所有价值......

除了这一个解决方案: 您可以使用该代码获取所有值并返回所需的ID,然后您可以查询模型并返回所有连接的数据....这不适用于我的系统/代码。< / p>

我希望这有帮助。