jqGrid - 从JSON加载值

时间:2014-12-03 16:07:48

标签: javascript c# jquery json jqgrid

我使用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"}]

我做错了什么或遗失了什么?

由于

1 个答案:

答案 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; } } 选项。