如何将JsonResult对象绑定到jqgrid?

时间:2013-11-29 00:42:09

标签: jquery asp.net-mvc-4 jqgrid jsonresult jsonreader

我在控制器中有以下方法,我从视图中调用以填充jqgrid。此方法正常工作并返回数据。

public JsonResult _FirstLook()
{
    HttpResponseMessage response;

    response = client.GetAsync("api/CasoAdverso").Result;
    if (response.IsSuccessStatusCode)
        {
            IEnumerable<CasoAdverso> list = response.Content.ReadAsAsync<IEnumerable<CasoAdverso>>().Result;

            return Json(list);
        }
}

如果我调试返回的内容,结构将如下图所示。对象列表位于Data:

enter image description here

我将总结一下CasoAdverso类,因为将它放在这里非常重要:

public class CasoAdverso
{
    public int CAAD_Id { get; set; }
    public string CAAD_Id_Local { get; set; }
    public System.DateTime? CAAD_Fecha_Contacto { get; set; }
}

jqgrid实际上接收要填充的数据,但不知何故显示:

$(grid_selector).jqGrid({
datatype: "json",
height: 250,
mType: 'GET',
url: "@Url.Action("_FirstLook", "CasoAdversoForm")", 
colNames: ['ID', 'ID Caso', 'Fecha Contacto Notif.'],
        colModel: [
            {   name: 'CAAD_Id', index: 'CAAD_Id', key: true },
            {   name: 'CAAD_ID_Local', index: 'CAAD_ID_Local', width: 60, editable: false },
            {  name: 'CAAD_Fecha_Contacto', index: 'CAAD_Fecha_Contacto', width: 90, editable: false, sorttype: "date", unformat: pickDate },
        ],
  ...
        },

我知道解决方案可能来自jqgrid中的jsonReader但是如果不完全更改控制器中的_FirstLook方法,我就无法取得任何进展。

在我的场景中,我需要更改jqgrid以绑定我当前从控制器获取的内容。最好不要在控制器中做一些解决方法,以便在默认情况下为jqgrid提供所需的内容。

1 个答案:

答案 0 :(得分:2)

我认为所述问题的主要原因不是“绑定”。您使用mType: 'GET'选项将被忽略,因为名称为mType的选项不存在。因此,将使用默认选项值mtype: 'GET'mtype而不是mtype)。因此,您应该使用mtype: 'POST'或替换

return Json(list);

return Json(list, JsonRequestBehavior.AllowGet);

此外,我建议您验证是否使用loadonce: true选项,因为您没有在服务器代码中实现服务器端分页。我建议您另外使用gridview: trueautoencode: true选项,并考虑使用height: "auto"代替height: 250