2009-11-17 7 views
3

jqGrid에서 다중 선택을 활성화하고 사용자가 ASP.NET MVC 컨트롤러를 사용하여 선택한 모든 행을 삭제할 수있게하려면 어떻게해야합니까?
삭제 URL 속성을 내/컨트롤러/삭제 메서드로 설정하고 하나의 레코드를 선택하면이 작동합니다. 그러나 여러 레코드를 선택하면 정수 ID가 필요한 컨트롤러에 Null 값을 다시 보내려고합니다.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에 배열 매개 변수를 전달하려면 내가 MVC2 및 JQuery와 1.4.2이 업데이트 할 :

 

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 아약스 부분 thx

관련 문제