1

我刚刚读到 jqGrid 中的 mtype 选项将决定我们将如何进行 ajax 调用。GET 将检索数据,POST 将发送数据。

当我加载我的 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"]我可以在我的行动中使用类似的东西吗?
4

2 回答 2

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 的内容,您还将看到您正在传入并使用这些参数来处理分页。

于 2013-05-07T16:08:17.220 回答
1
  1. mtype 选项定义 HTTP 请求的类型:

    • 如果它设置为 GET(默认情况下):请求参数附加在地址栏中的 http 查询中,如下所示 .../Controller/Action1?ParentId=selectedParentId
    • 如果设置为POST,则发送http查询时请求参数是隐藏
      的。实际上,这两种方法发送相同的参数,但方式不同。因此,使用 GET 或 POST 方法加载返回的 JSON 数据有任何不同
  2. 或者,当然您可以将 jqGrid 的其他选项作为参数获取,例如排序顺序

对不起,我的英语不好

于 2013-05-07T16:09:51.800 回答