2009-11-17 56 views
3

如何在jqGrid中启用多个选择,还允许用户使用ASP.NET MVC控制器删除所有选定的行?
我已经将delete url属性设置为我的/ Controller/Delete方法,并且如果选择了一条记录,这可以正常工作。但是,如果选择了多个记录,它会尝试将空值发送回需要整数ID的控制器。使用jqGrid删除ASP.NET MVC中的多个记录

回答

2

可以,但你必须为它编写代码:

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); 
    } 
0

我想更新这对MVC2和jQuery 1.4.2,如果你想通过数组参数MVC2:

 

var ids = $("#grid").getGridParam('selarrrow'); 
var postData = { values: ids }; 
if (confirm("Delete these " + count + " records?")) { 
       $.ajax({ 
        type: "POST", 
        traditional: true, 
        url: "GridDBDemoDataDeleteMultiple", 
        data: postData, 
        dataType: "json", 
        success: function() { $("#grid").trigger("reloadGrid") } 
       }); 
      } 

检查http://jquery14.com/day-01/jquery-14 ajax部分 thx