2

我想用我从velocity生成的json字符串加载一个jqGrid表;这些是表参数:

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"]

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

4

1 回答 1

4

首先,超过 90% 的使用datatype: "jsonstring"是在以错误方式使用 jqGrid 的情况下。您没有更详细地描述您的原始问题,但我建议您考虑使用datatype: "json"而不是datatype: "jsonstring".

如果您确实需要使用,那么您应该使用optiondatatype: "jsonstring"提供输入数据,而不是在.datastr datadatatype: "local"

来自的数据content真的是 JSON 字符串 ( typeof content === "string") 还是您将数据作为对象 ( typeof content === "string")?在我看来,最好在您的情况下使用datatype: "local", data: contentdatatype: "local", data: $.parseJSON(content)代替使用datatype: "jsonstring", datastr: content,,因为输入数据的格式不是标准要求的datatype: "jsonstring"(请参阅文档),因此为了能够成功读取数据,您必须提供相应的jsonReader(看这里的一个例子)

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

于 2013-02-08T14:10:35.390 回答