Yii CgridView批量删除

时间:2014-03-12 11:46:09

标签: ajax yii cgridview

在我的许多模特中' CgridViews我有一个批量删除功能:chechboxColumn和删除所有已检查用户的删除按钮。为此,我在管理员中使用ajax,在控制器中使用新操作。

所有这一切都正常,直到我向gridview添加分页,这不会保存前几页中的已检查行。

我试过用  ' enableHistory' =真, 但它没有做任何事情(从我读过的内容中我并不是唯一的一个:醇厚:),所以我下载了这个扩展名:selgridview

扩展程序有效 - 当我浏览页面时,选中的行会保持检查但是,我的批量删除功能只能看到我现在正在检查的页面的行。

这是我使用的ajax:

        <?php
    Yii::app()->clientScript->registerScript('delete','
    $("#butt").click(function(){
                    var checked=$("#person-grid").yiiGridView("getChecked","person-grid_c11");
                    var count=checked.length;
                    if(count>0 && confirm(" are you sure you want to delete "+count+" people ? "))
                    {
                                    $.ajax({
                                                    data:{checked:checked},
                                                    url:"'.CHtml::normalizeUrl(array('person/remove')).'",
                                                    success:function(data){$("#person-grid").yiiGridView("update",{});},              
                                    });
                    }
                    });
    ');
    ?>

现在,也许这是一个愚蠢的问题,但我对javascript知之甚少。 我甚至不确定问题出在ajax中。 。 。 。

非常感谢帮助:rolleyes:

2 个答案:

答案 0 :(得分:1)

我正在使用selgridview extension

以下是我删除所选用户的代码

//delete multiple users at once
$('#delete_selected_items_button').on('click', function () {
    var selected = $("#users-grid").selGridView("getAllSelection");

    //if nothing's selected
    if ( ! selected.length)
    {
        alert('Please select minimum one user to be deleted');
        return false;
    }

    //confirmed?
    if ( ! confirm('Are you sure to delete ' + selected.length + ' users?')) return false;

    var multipledeleteUrl = "<?php echo Yii::app()->baseUrl;?>/users/multipledelete";

    $.ajax({
        type: "POST",
        url: multipledeleteUrl,
        data: {selectedUsers : selected},
        success: (function (e){

            //just to make sure we delete the last selected items
            $("#users-grid").selGridView("clearAllSelection");

            //we refresh the CCGridView after success deletion
            $.fn.yiiGridView.update("users-grid");

        }),
        error: (function (e) {
            alert("Can not delete selected users");
        })
    });
})

UsersControlleractionMultipleDelete()做类似的事情

if (Yii::app()->request->isAjaxRequest)
        {
            $selectedUsers = Yii::app()->request->getPost('selectedUsers');

            //iterate through all ids
            foreach ($selectedUsers as $id)
            {
                //delete the user here...
            }
        }

答案 1 :(得分:0)

  1. 我不知道这个插件以及它如何保存复选框 检查,但你可以查看,然后发送该信息 到你的控制器。
  2. 或者您可以保存应该使用的模型 在会话中删除。在复选框上单击()(检查复选框是否已选中) 或者未选中)事件使用ajax调用您的控制器以保存 模特在你的会话中的身份证。然后当用户点击删除时你可以 从会话中检索此数据。