在我的许多模特中' 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:
答案 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");
})
});
})
在UsersController
,actionMultipleDelete()
做类似的事情
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)