使用jsonstring数据类型加载jqgrid表

时间:2013-02-08 13:35:03

标签: javascript json jqgrid

我想加载一个jqGrid表,其中包含我从velocity生成的json String;这些是表格参数:

var gridParams = {
    datatype: "jsonstring", 
    data: content,
    pager: $('#pagernav'), 
    rowNum: 5000,
    rownumbers: true,
    rowList: [50,100,200,500,1000,2000],
    ignoreCase: true,
    colNames: columns,
    colModel: tableColModel,
}

在控制台上打印时,内容和列的值为:

[{"ID":"7", "fname":"Bob", "addr":"18" }, {"ID":"8", "fname":"Sue" }]
["ID", "fname", "addr"]

确实网格是用正确的列创建的,但它是空的......我写的是什么问题?谢谢你的回答。

1 个答案:

答案 0 :(得分:4)

首先,如果以错误的方式使用jqGrid,则datatype: "jsonstring"的使用率为90%。您没有更详细地描述原始问题,但我建议您考虑使用datatype: "json"代替datatype: "jsonstring"

如果您确实需要使用datatype: "jsonstring",那么您应该使用datastr option而不是data的{​​{1}}选项来提供输入数据。

来自datatype: "local"的数据是否真的是JSON字符串(content),或者您将数据作为对象(typeof content === "string")?在我看来,最好在您的情况typeof content === "string"datatype: "local", data: content而不是使用datatype: "local", data: $.parseJSON(content)中使用,因为输入数据的格式不是datatype: "jsonstring", datastr: content,所需的标准格式(请参阅the documentation)因此,为了能够成功读取数据,您必须提供相应的datatype: "jsonstring"(请参阅here示例)

我建议您使用jsonReader选项,将gridview: true替换为pager: $('#pagernav'),并为pager: '#pagernav'列定义key: true属性。此外,您应始终在问题文本中包含'ID'colModel的文字朝向代码colModel: tableColModel的方向 - 如果没有显示必需的详细信息,这对于找到您的问题的解决方案非常重要。