Загрузка данных для jqgrid treegrid с использованием json не работает

Я просто пытаюсь использовать jqgrid на моем сайте. Я использую vs 2013, asp.net mvc 5 и установил jqgrid и jqgridmvc (jqgrid mvc helper) из nuget. Я последовал примеру от создателя 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.../controller/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 ответ

Решение

Хорошо, оказывается, это из-за того, что библиотека, которую я использовал (mvcjqgrid), не поддерживает последнюю версию jqgrid, которую я скачал с Nuget. сгенерированный код сетки имеет тип "treedatatype", а для более новой jqgrid правильный код - "тип данных". Поэтому я просто запускаю функцию ниже в событии onBeforeRequest и все работает!

function DataTypeCorrection() {
    $("#tc-jqgrid").setGridParam({ datatype: 'json' });
}
Другие вопросы по тегам