2012-12-16 2 views
0

내가, 내가 기대 행을 선택하고 편집 버튼을 클릭jqGrid 탐색 버튼은 게시 방법을 실행 했습니까?

가져 오기 방법

[HttpGet] 
public ActionResult EditAuthor(int authorId) 

포스트 방법

[HttpPost] 
public ActionResult EditAuthor(AuthorViewModel model, HttpPostedFileBase file) 

내 컨트롤러에이 방법을

$(document).ready(function() { 

    $("#grid").jqGrid({ 
     url: '@Url.Action("GetAllAuthors", "Admin")', 
     datatype: "json", 
     mtype: 'get', 
     colNames: ['Yazar Adı', 'Öz Geçmiş'], 
     colModel: [ 
        { name: 'Name', index: 'Name', editable: false }, 
        { name: 'Description', index: 'Description', editable: false } 
     ], 
     jsonReader: { 
      repeatitems: false, 
      id: "sno", 
      root: "rows", //array containing actual data 
      page: "page", //current page 
      total: "total", //total pages for the query 
      records: "records", //total number of records 
      repeatitems: false 
     }, 
     rowNum: 10, 
     rowList: [10, 20, 30, 40, 50], 
     pager: jQuery('#gridpager'), 
     sortname: 'Name', 
     viewrecords: true, 
     sortorder: "asc", 
     width: 710, 
     height: 300 
    }) 
    .navGrid('#gridpager', { edit: false, add: false, del: false, search: false, refresh: false }) 
    .navButtonAdd('#gridpager', { 
     caption: "Düzenle", 
     buttonicon: "ui-icon-pencil", 
     onClickButton: function() { 
      var grid = $("#grid"); 
      var rowid = grid.jqGrid('getGridParam', 'selrow'); 
      //alert(rowid + " - " + grid.jqGrid('getCell', rowid, 'CustomerName') + " - Link: " + $("#customers_grid_table a.customer_details").attr("href")); 
      window.location = '@Url.Action("EditAuthor", "Admin")?authorId=' + rowid; 
      //LoadAction('@Url.Action("EditAuthor", "Admin")?authorId=' + rowid); 
     } 
    }); //end jqgrid 
}); 

을있는 jqGrid 메서드를 호출하지만 post 메서드가 실행됩니다. 어떻게하면 화재를 일으킬 수 있습니까?

감사합니다.

답변

1

window.location의 새 값을 설정하면 HTTP GET이 사용됩니다. HTTP POST를 생성하려면 $.ajax을 사용하거나 양식을 제출하십시오. 예를 들어 보이지 않는 <form>을 동적으로 빌드하고 제출할 수 있습니다. 예를

onClickButton: function() { 
    var rowid = $(this).jqGrid("getGridParam", "selrow"), 
     myForm = document.createElement("form"), 
     param1 = document.createElement("input"); 

    myForm.action = '@Url.Action("EditAuthor", "Admin")'; 
    myForm.method = "POST"; 
    myForm.style.display="none"; 

    param1.name = "authorId"; 
    param1.type = "text"; 
    param1.value = rowid; 
    myForm.appendChild(param1); 

    document.body.appendChild(myForm); 
    myForm.submit(); 
    document.body.removeChild(myForm); 
} 

위해 나는 (rowid가 null 여부) 일부 행이 선택되어 있는지 여부를 추가 검증을 포함하는 추가를 권장합니다.

은 또한 당신이

  • 단지 그리드의 성능이 향상됩니다 그리드에 항상gridview: true 옵션을 사용하는 것이 좋습니다.
  • pager: jQuery('#gridpager')pager: '#gridpager'으로 바꿉니다.
  • jsonReader 옵션의 현재 값을 jsonReader: {repeatitems: false, id: "sno"}으로 바꿉니다. 지정한 옵션은 이며 기본값은 (the documentation 참조)입니다. 또한 동일한 속성 repeatitems: false을 두 번 지정하므로 현재 값 jsonReader 옵션에 구문 오류가 있습니다.
+0

나는 방법을 게시하고 싶지 않다. 나는 방법을 원해. 코드를 제안 사항으로 변경했습니다. 그러나 여전히 방법을 게시하십시오. –

+0

또한 감사합니다. 나는 그들을했다. –

+0

나는 sory, jqGrid에 관한 것이 아니다. 내 모델 유형에 관한 것. 고마워. –

관련 문제