Загрузка данных для 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' });
}