使用json加载jqgrid treegrid的数据不起作用

时间:2014-08-20 13:31:21

标签: asp.net-mvc json jqgrid mvcjqgrid

我只是尝试在我的网站中使用jqgrid。 我使用vs 2013,asp.net mvc 5,并从nuget安装了jqgrid和jqgridmvc(jqgrid mvc helper)。 我按照jqgridmvc制作者(使用xml作为源代码)的例子,它工作正常: http://mvcjqgrid.skaele.it/Home/TreeGrid

然而,当我尝试使用json作为源时,不知何故它不起作用。我怀疑我的json格式是错误的,但我不知道在哪里:

控制器代码:

public JsonResult TreeGridData(GridSettings gridSettings)
  {
  var jsonData = new
    {
    total = 1,
    page = 1,
    records = 2,
    rows = new[]{
      new {id = 1, cell = new object[] {"1", "root 1", "0", null, false, false, true}},
      new {id = 11, cell = new object[] {"11", "child 11", "1", "1", true,false, true}}
      }
    };
 return Json(jsonData, JsonRequestBehavior.AllowGet);
 }

查看代码:

@(Html.Grid("treeGrid")
.SetCaption("TreeGrid")
.AddColumn(new Column("ItemID")
  .SetLabel("Id").SetKey(true))
.AddColumn(new Column("Name")
  .SetAsExpandable())
.SetUrl(Url.Action("TreeGridData"))
.EnableTreeGrid()
 )

谢谢!

编辑: 根据评论中的建议,我添加了控制器生成的响应 (www.localhost ... /控制器/ treegriddata):

{
"total":1,
"page":1,
"records":2,
"rows":
[{"id":1,"cell":["1","root 1","0",null,false,false,true]},
 {"id":11,"cell":["11","child 11","1","1",true,false,true]}]
}

1 个答案:

答案 0 :(得分:0)

好的,原来是因为我使用的库(mvcjqgrid)不支持我从Nuget下载的最新版本的jqgrid。生成的网格代码是“treedatatype”,而对于较新的jqgrid,正确的代码是“datatype”。所以我只是在onBeforeRequest事件中运行以下函数,一切正常!

function DataTypeCorrection() {
    $("#tc-jqgrid").setGridParam({ datatype: 'json' });
}