2012-06-26 71 views
0

jqGrid不發送postdata到我的控制器。我嘗試了所有在stackoverflow上提供的解決方案,顯然買了我在某處的錯誤。因此,這裏是代碼:jqGrid postdata發送空值(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()通過點擊一個按鈕,我得到一個警報,以確認我它正確讀取文本字段的值,然後刷新網格。我收到了控制器的調用,但是CompanyNamePart和UsernamePart變量的值都是空的,即使我填充了它們。

我試過POSTDATA部分另一種解決方案與另一種方法,首先,我創建了一個返回需要的值,並把它們在網格POSTDATA部分功能:

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

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

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

,但沒有成功。

當我檢查了Firebug的,我可以看到的jqGrid不發送POSTDATA值:

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

我在做什麼錯?

回答

3

該參數被稱爲postData,而不是postdata。不要忘記,javascript是一種區分大小寫的語言。因此,嘗試這樣的:

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

還要注意的是我,你在你的代碼已經和它產生無效的javascript 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) 

代碼確定。