2012-06-26 2 views
0

jqGrid가 내 컨트롤러에 postdata를 보내지 않습니다. 나는 stackoverflow에 제공된 모든 솔루션을 시도, 분명히 내가 어딘가에 오류가있어. 컨트롤러 측면에서jqGrid postdata가 null 값 (mvc3 asp/net)을 보냅니다.

 

    function refreshGrid() { 
     alert('CompanyNamePart=' + $("#CompanyNamePart").val()); // to check if this is correct value 
     $("#list").trigger('reloadGrid'); 
     return false; 
    } 

    $(function() { 
     var grid = jQuery("#list").jqGrid({ 
      datatype: 'json', 
      caption: 'Transaction Log', 
      postdata: { 
       CompanyNamePart: function() { return $("#CompanyNamePart").val(); }, 
       UsernamePart: function() { return $("#UsernamePart").val(); }, 
      }, 
      url: '@Url.Action("GetTransactionLogData")', 
      mtype: 'GET', 
      colNames: ['Ref.', 'TradeDate', 'Status'], 
      colModel: [ 
       { name: 'Reference', index: 'Reference', width: '60' }, 
       { name: 'TradeDate', index: 'TradeDate', width: '70' }, 
       { name: 'Status', index: 'Status', width: '80' } 
      ], 
      pager: $('#pager'), 
      rowNum: 10, 
      height: '100%' 
     }); 
    }); 


나는 간단한 코드가 있습니다 :

 
[HttpGet] 
     public ActionResult GetTransactionLogData(string sidx, string sord, int page, int rows, string CompanyNamePart, string UsernamePart) 
     { return Json(null); } 

및 디버깅 모드에서

가 나는 버튼을 클릭하여 refreshGrid()를 호출 할 때 나는 하나의 경고가 나에게 확인받을를 그래서 여기에 코드입니다 그것은 올바르게 textfield의 값을 읽은 다음 그리드를 새로 고칩니다. 컨트롤러 호출을 수신하지만 CompanyNamePart 및 UsernamePart 변수의 값은 모두 채워졌지만 null입니다.

 
    function getCompanyNamePartVal() { 
     return $("#CompanyNamePart").val(); 
    } 

    function getUsernamePartVal() { 
     return $("#UsernamePart").val(); 
    } 

... in jqgrid definition 
    postdata: { 
       CompanyNamePart: getCompanyNamePartVal(), 
       UsernamePart: getUsernamePartVal(), 
      }, 

을하지만 성공 :

은 내가 먼저 내가 필요한 값을 반환 그리드의 POSTDATA 섹션에 넣어 기능을 만들어 다른 접근 방식을 POSTDATA 섹션에 대한 또 다른 해결책을 시도했다.

내가 방화범을 선택하면, 내가있는 jqGrid가 POSTDATA 값을 송출하지 않게 볼 수 있습니다 :

 
Get Parameters caught by Firebug 
_ 1340696638960 
_search false 
nd 1340696638955 
page 1 
rows 10 
sidx  
sord asc 

내가 잘못하고있는 중이 야 무엇을?

답변

3

매개 변수의 범위는 이며 postdata이 아닙니다. 자바 스크립트가 대소 문자를 구별하는 언어임을 잊지 마십시오. 그래서 다음과 같이하십시오 :

postData: { 
    CompanyNamePart: function() { return $("#CompanyNamePart").val(); }, 
    UsernamePart: function() { return $("#UsernamePart").val(); } 
} 

또한 당신이 코드에 있었다 무효 자바 스크립트를 생성 UsernamePart 함수 뒤에 후행 쉼표를 제거 알 수 있습니다. 좀 더 민감한 브라우저는이를 받아 들일 수 없습니다.

+0

대단히 감사합니다. 당신은 생명의 은인입니다! :) –

0
$("#grid").jqGrid({ 
     url: "/DocumentoBalanza/GetBalanzaEmpresaMes", 
     //postData: JSON.stringify(formDataParam), 
     postData : { 
      id: function() { return formDataParam.id; }, 
      strDate: function() { return formDataParam.strDate; }, 
     }, 
     datatype: 'json', 
     mtype: 'GET', 

public JsonResult GetBalanzaEmpresaMes(string sidx, string sord, int page, int rows, int id, string strDate) 

코드 OK.