【发布时间】:2010-12-17 10:20:58
【问题描述】:
如何在 jqGrid 中启用多项选择,并允许用户使用 ASP.NET MVC 控制器删除所有选定的行?
我已将删除 url 属性设置为我的 /Controller/Delete 方法,如果选择了一条记录,这将正常工作。但是,如果选择了多条记录,它会尝试将空值发送回需要整数 id 的控制器。
【问题讨论】:
标签: asp.net-mvc jqgrid
如何在 jqGrid 中启用多项选择,并允许用户使用 ASP.NET MVC 控制器删除所有选定的行?
我已将删除 url 属性设置为我的 /Controller/Delete 方法,如果选择了一条记录,这将正常工作。但是,如果选择了多条记录,它会尝试将空值发送回需要整数 id 的控制器。
【问题讨论】:
标签: asp.net-mvc jqgrid
你可以,但你必须为它写代码:
deleteSelected: function(grid) {
if (!grid.jqGrid) {
if (console) {
console.error("'grid' argument must be a jqGrid");
}
return;
}
var ids = grid.getGridParam('selarrrow');
var count = ids.length;
if (count == 0) return;
if (confirm("Delete these " + count + " records?")) {
$.post("DeleteMultiple",
{ ids: ids },
function() { grid.trigger("reloadGrid") },
"json");
}
}
[HttpPost]
public ActionResult DeleteMultiple(IEnumerable<Guid> ids)
{
if (!Request.IsAjaxRequest())
{
// we only support this via AJAX for now.
throw new InvalidOperationException();
}
if (!ids.Any())
{
// JsonError is an internal class which works with our Ajax error handling
return JsonError(null, "Cannot delete, because no records selected.");
}
var trans = Repository.StartTransaction();
foreach (var id in ids)
{
Repository.Delete(id);
}
trans.Commit();
return Json(true);
}
【讨论】:
如果你想将数组参数传递给 mvc2,我想为 MVC2 和 jquery 1.4.2 更新这个:
var ids = $("#grid").getGridParam('selarrrow'); var postData = { 值:ids }; if (confirm("删除这些 " + count + " 记录?")) { $.ajax({ 类型:“发布”, 传统的:真的, url: "GridDBDemoDataDeleteMultiple", 数据:postData, 数据类型:“json”, 成功:function() { $("#grid").trigger("reloadGrid") } }); }检查http://jquery14.com/day-01/jquery-14 ajax 部分 谢谢
【讨论】: