我使用jqGrid
数据类型正常运行local
,但我现在希望通过json
加载这些值,但无法更改它。
这是我的jqGrid
代码
jQuery("#grid").jqGrid({
datatype: "json",
url: "/controller/getItems?id=2",
width: 1405,
colNames: ['id', 'surname'],
colModel: [
{ name: 'id', index: 'id', editable: false, hidden: false, hidedlg: true },
{ name: 'surname', index: 'surname', editable: true }
],
onSelectRow: function (id, status, e) {
...
},
editurl: url,
...
因此,获取JSON的方法已成功解雇。
[HttpGet]
public ActionResult getItems(string id)
{
List<model> items = method.getItems(id);
string jsonText = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(items);
return Json(jsonText, JsonRequestBehavior.AllowGet);
}
JSON
中的列名称与colModel
名称相匹配
返回json
的示例 - 上面的对象jsonText
包含的内容
[{"id":434,"surname":"Woods"},
{"id":435,"surname":"Adams"}]
我做错了什么或遗失了什么?
由于
答案 0 :(得分:1)
我认为使用System.Web.Script.Serialization.JavaScriptSerializer().Serialize
时出错。您只需要返回Json(items, JsonRequestBehavior.AllowGet);
即可。此外,您可以从id
中删除列colModel
。仍将读取id
值,并将其指定为行(id
网格的id
)行的<tr>
属性值,称为rowid。您应该向网格添加loadonce: true
选项,因为您没有在服务器端实现数据分页,并添加gridview: true
(如果您尚未使用它)以获得更好的性能并{{1}将输入数据解释为文本而不是HTML片段。
更新:如果使用旧版本的jqGrid,则必须包含对应输入数据格式的autoencode: true
参数:
jsonReader
还应该使用jsonReader: {
repeatitems: false,
root: function (obj) { return obj; }
}
选项。