$('#table').jqGrid({
url: 'Test/TestAction',
mtype: 'POST', // 这里GET和POST都试过
datatype: 'json',
autowidth: true,
autoheight: true,
caption: 'Test',
colNames: ['编号', '类型ID', '类型名称', '类型值', '备注'],
colModel: [
{ name: 'ID', width: 75, sortable: false },
{ name: 'TypeID', width: 90, sortable: false },
{ name: 'TypeName', width: 100, sortable: false },
{ name: 'TypeValue', width: 80, align: "right", sortable: false },
{ name: 'TypeBZ', width: 200, align: "right", sortable: false }
]
});
后台代码(试过net自带的json序列化,用下面的Newtonsoft的Json组件,也没法显示数据)
public JsonResult TestAction()
{
string str = Newtonsoft.Json.JsonConvert.SerializeObject
(dictionaryService.GetAll_DM_WEBCONFIG());
JsonResult jr = Json(str, JsonRequestBehavior.AllowGet);
return jr;
}
在前台的jqgrid的loadComplete事件里面看了下,数据是确实传到前台了的格式如下:
[{"ID":1,"TypeID":1,"TypeName":"Top","TypeValue":1,"TypeBZ":"测试一"},{"ID":2,"TypeID":1,"TypeName":"Left","TypeValue":1,"TypeBZ":"测试二"},{"ID":3,"TypeID":1,"TypeName":"Right","TypeValue":1,"TypeBZ":"测试三"},{"ID":4,"TypeID":1,"TypeName":"Bottom","TypeValue":1,"TypeBZ":"测试四"},{"ID":5,"TypeID":5,"TypeName":"5","TypeValue":5,"TypeBZ":"5"},{"ID":6,"TypeID":6,"TypeName":"6","TypeValue":6,"TypeBZ":"6"},{"ID":7,"TypeID":7,"TypeName":"7","TypeValue":7,"TypeBZ":"7"},{"ID":8,"TypeID":8,"TypeName":"8","TypeValue":8,"TypeBZ":"8"},{"ID":9,"TypeID":9,"TypeName":"9","TypeValue":9,"TypeBZ":"9"},{"ID":11,"TypeID":11,"TypeName":null,"TypeValue":null,"TypeBZ":null},{"ID":12,"TypeID":12,"TypeName":null,"TypeValue":null,"TypeBZ":null}]
把上面的json定义为本地变量的话,采用local方式是可以显示数据的,但如果采用url方式,就始终显示不了。
url: 'Test/TestAction',
mtype: 'POST', // 这里GET和POST都试过
datatype: 'json',
autowidth: true,
autoheight: true,
caption: 'Test',
colNames: ['编号', '类型ID', '类型名称', '类型值', '备注'],
colModel: [
{ name: 'ID', width: 75, sortable: false },
{ name: 'TypeID', width: 90, sortable: false },
{ name: 'TypeName', width: 100, sortable: false },
{ name: 'TypeValue', width: 80, align: "right", sortable: false },
{ name: 'TypeBZ', width: 200, align: "right", sortable: false }
]
});
后台代码(试过net自带的json序列化,用下面的Newtonsoft的Json组件,也没法显示数据)
public JsonResult TestAction()
{
string str = Newtonsoft.Json.JsonConvert.SerializeObject
(dictionaryService.GetAll_DM_WEBCONFIG());
JsonResult jr = Json(str, JsonRequestBehavior.AllowGet);
return jr;
}
在前台的jqgrid的loadComplete事件里面看了下,数据是确实传到前台了的格式如下:
[{"ID":1,"TypeID":1,"TypeName":"Top","TypeValue":1,"TypeBZ":"测试一"},{"ID":2,"TypeID":1,"TypeName":"Left","TypeValue":1,"TypeBZ":"测试二"},{"ID":3,"TypeID":1,"TypeName":"Right","TypeValue":1,"TypeBZ":"测试三"},{"ID":4,"TypeID":1,"TypeName":"Bottom","TypeValue":1,"TypeBZ":"测试四"},{"ID":5,"TypeID":5,"TypeName":"5","TypeValue":5,"TypeBZ":"5"},{"ID":6,"TypeID":6,"TypeName":"6","TypeValue":6,"TypeBZ":"6"},{"ID":7,"TypeID":7,"TypeName":"7","TypeValue":7,"TypeBZ":"7"},{"ID":8,"TypeID":8,"TypeName":"8","TypeValue":8,"TypeBZ":"8"},{"ID":9,"TypeID":9,"TypeName":"9","TypeValue":9,"TypeBZ":"9"},{"ID":11,"TypeID":11,"TypeName":null,"TypeValue":null,"TypeBZ":null},{"ID":12,"TypeID":12,"TypeName":null,"TypeValue":null,"TypeBZ":null}]
把上面的json定义为本地变量的话,采用local方式是可以显示数据的,但如果采用url方式,就始终显示不了。
root: "rows", // json中代表实际模型数据的入口
page: "page", // json中代表当前页码的数据
total: "total", // json中代表页码总数的数据
records: "records", // json中代表数据行总数的数据
repeatitems: false
},
这样设置的
{"records":11,"total":11,"page":1,"rows":……
我这个只是一个测试例子 ,并没有做分页方面的数据,因为不需要带前面的信息吧?
我把前面的加上试下
这部分是跟JsonReader配合的吧?
加上后还是无效 ,问题应该不是出在这里
下面这行调用,对应1261行
drows = $.jgrid.getAccessor(data,dReader.root);发现如果用local的方式加载json数据,传入data是一个object,但如果读取url的json数据,传入的是字符串,getAccessor这个函数似乎在解析字符串上有问题,
ret = obj[expr]; 对应133行
expr为"rows"的时候,
取不到obj中的数据求高人解答,jqgrid用的是最新版的。
奇怪,这方法跟网上讲的都不一样,不知道是不是新版的做过改动