2011-09-02 8 views
1

서버에 json 포스트를 사용하여 레코드를 수신하는 페이지에 jqGrid가 있습니다. 같은 페이지에는 삭제 버튼도 있습니다. 삭제 버튼을 클릭하면 선택한 레코드를 삭제하기 위해 서버에 아약스 게시물이 사용됩니다. 레코드를 삭제 한 후 서버가 성공 코드를 반환하면 격자를 새로 고침해야합니다.마지막 레코드가 제거 될 때 jqGrid reloadGrid가 작동하지 않습니다.

그리드에 레코드가 하나만있는 경우를 제외하고는 정상적으로 작동하는 것 같습니다. 삭제 한 마지막 레코드는 그리드에서 절대 제거되지 않습니다. 바닥 글의 새로 고침 단추를 눌러도 여전히 사라지지 않습니다. 하나 이상의 레코드가있을 때 예상대로 새로 고칩니다.

나는 jqGrid를 처음 사용하므로 뭔가 잘못하고 있다고 확신합니다. 어떤 도움을 주시면 감사하겠습니다.

있는 jqGrid 정의

$('#gridOrgs').jqGrid({ 
     url: 'some url goes here', 
     datatype: 'json', 
     mtype: 'POST', 
     loadonce:false, 
     colNames: ['ID', 'Name', 'City', 'Province', 'Admin'], 
     colModel: [ 
      { name: 'Id', index: 'Id', hidedlg: true, hidden: true, sortable: false }, 
      { name: 'CompanyName', index: 'CompanyName', width: 200, sorttype: 'text' }, 
      { name: 'City', index: 'City', width: 150, sorttype: 'text' }, 
      { name: 'Province', index: 'Province', width: 150, sorttype: 'text' }, 
      { name: 'IsAdmin', index: 'IsAdmin', width: 50, sorttype: 'text', formatter: 'checkbox', align: 'center'}, 
      ], 
     pager: '#pagerOrgs', 
     jsonReader: { 
      repeatitems: false, 
      id: 'Id' }, 
     rowNum: 10, 
     rowList: [10, 25, 50, 75, 100], 
     sortname: 'CompanyName', 
     sortorder: 'desc', 
     viewrecords: true, 
     caption: 'Companies', 
     hidegrid: false, 
     width: 650, 
     height: 400, 
     onSelectRow: function (id) { 
       if (id) 
        RowSelected(id, $('#gridOrgs').getCell(id,'IsAdmin')); 
       else 
        NoRowSelected(); 
      } 
    }); 
    jQuery("#gridOrgs").jqGrid('navGrid','#pagerOrgs',{edit:false,add:false,del:false}); 

삭제 버튼 클릭 이벤트 :

$('#btnDelete').click(function() { 
     var id = jQuery("#gridOrgs").jqGrid('getGridParam','selrow'); 

     if (id) 
      $.post('@Url.Action("Json_Delete", "Organization")', {'id': id}, function(data){ProcessDeleteResponse(data.result);}, 'json'); 
     else 
      $('#dialogNothingSelected').dialog('open'); 
    }); 

    function ProcessDeleteResponse(resultCode) { 
     if (resultCode == 'success') 
      $('#gridOrgs').trigger('reloadGrid'); 
    } 

나는 또한

.trigger 시도 ('reloadGrid'를, [{페이지 : 1}]);

.trigger ('reloadGrid', [{current : true}]);

내가하는 일과 관계없이 마지막 레코드는 그리드에 남아 있습니다.

마지막으로 한 가지 : reloadGrid를 트리거하면 그리드가 서버를 호출하고 업데이트 된 정보를받습니다. 업데이트 된 정보에는 총 레코드 수에 대해 0이 포함됩니다.

Thanks again. 내가 다음과 같은 방법으로 호출하여이 문제를 해결할 수 있었던 것 같다

답변

0

:

$('#gridOrgs').jqGrid('delRowData', id); 

는 사람이 더 나은 솔루션이 있다면 알려주세요.

관련 문제