2013-05-07 104 views
1

我剛剛讀到jqGrid中的mtype選項將決定我們如何執行ajax調用。 GET將檢索數據,POST將發送數據。jqGrid MVC中的GET和POST mtype

當我加載我的jqGrid的,我想一個額外的參數傳遞給我的控制器,在我的js文件:

url: 'Controller/Action1', 
mtype: 'POST', 
datatype: 'json', 
postData: { ParentId: selectedParentId }, 

在我的控制器我有這樣的:

public JsonResult Action1(ParentId) 
{ 
// Retrieve child properties from db using ParentId 
// Return json result 
} 
  1. 如何如果我的mtype是POST,我的jqGrid會加載返回的json數據嗎?
  2. 在我的行動,我仍然可以得到我的jqGrid的其他選項作爲參數如排序順序,頁面大小選擇?我可以在我的動作中使用類似this.Request.Param["sidx"]的東西嗎?

回答

1

在你的控制器,你會採取所有參數的jqGrid會傳給你:

public ActionResult GetGridData(string sidx, string sord, int page, int rows, bool _search, string filters, string ParentId) 
{ 
.... 
int totalRecords = wholeList.Count(); 
var pagedQuery = wholeList.OrderBy(sidx + " " + sord).Skip((page - 1) * rows).Take(rows).ToList(); 

     var jsonData = new 
     { 
      total = (totalRecords + rows - 1)/rows, 
      page = page, 
      records = totalRecords, 
      rows = (
      from tempItem in pagedQuery 
      select new 
       { 
       cell = new string[] { 
        tempItem.ToString(), 
        ... 


       } 
      }).ToArray() 

return Json(jsonData, JsonRequestBehavior.AllowGet); 
} 

可以使用額外的參數來改變你反饋給jqGrid的東西,你也可以看到你傳入並使用參數來處理分頁。

1
  1. MTYPE選項定義HTTP請求的類型:

    • 如果它被設置爲GET(默認):請求參數在地址欄這樣HTTP查詢所附... /控制器/措施1?的ParentId = selectedParentId
    • 如果它被設置爲POST,發送HTTP查詢
      事實上,這兩種方法具有不同勢方式發送相同的參數時,請求參數被隱藏。因此,有上加載任何不同勢返回的JSON數據與GET或POST方法
  2. 或者當然你也可以得到你的jqGrid的其他選項像排序參數

對不起,我的壞英語