【发布时间】:2011-07-25 12:38:23
【问题描述】:
我在使用 setGridParam 设置 jqgrid 的 url 时遇到了一些问题。
我收到消息:“f 未定义”。
我的设置:
$("#prices").jqGrid({
colModel: [
...
],
pager: jQuery('#pricePager'),
ajaxGridOptions: { contentType: "application/json" },
mtype: 'POST',
loadonce: true,
rowTotal: 100,
rowNum: -1,
viewrecords: true,
caption: "Prices",
height: 300,
pgbuttons: false,
multiselect: true,
afterInsertRow: function (rowid, rowdata, rowelem) {
// ...
},
beforeSelectRow: function (rowid, e) {
// ...
},
onSelectRow: function (rowid, status) {
// ...
}
});
获取数据:
$("#prices").setGridParam({ datatype: 'json', page: 1, url: '@Url.Action("GridDataPrices")', postData: JSON.stringify(selections) });
$("#prices").trigger('reloadGrid');
响应是未编码的 json:
{"total":1,"page":1,"records":100,"rows":[{"id":160602948,"StartDate":"\/Date(1311717600000)\/","Duration":7,"Price":1076.0000,"Code":"code"},{"id":160602950,...}]}
但是,我使用 firebug 收到以下消息:
“f 未定义”
我首先使用 addJSONData 完成了这项工作,但因为我想保留本地排序,所以不得不替换它。
提前致谢。
【问题讨论】:
-
您可以尝试使用
$("#prices").jqGrid('setGridParam', {...});而不是$("#prices").setGridParam({...});。您应该将rowNum: -1替换为rowNum: 10000(一些较大的正数)。我建议您另外使用jquery.jqGrid.src.js而不是jquery.jqGrid.min.js,直到您没有错误为止。在这种情况下,名称将是可读的(名称“f”什么也没说)。此外,我建议您永远不要使用afterInsertRow并改用gridview:true。它可以显着提高 jqGrid 的性能。 -
感谢您的回答。我修改了选项并使用源文件来定位确切的问题。消息更加清晰:
obj is undefined [Break On This Error] ret = obj[expr];。发生这种情况的地方:getAccessor : function(obj, expr)。还没找到原因。 -
函数的参数:expr: "setGridParam"。对象显然是问题所在,但由于这是我第一次探索 jQgrid 的源代码,所以不太清楚它应该包含什么。
-
删除数据类型选项 (
datatype: 'json') 会使错误消失,但数据不会加载到网格中。 -
在哪一行代码中出现错误?您可以在调试器(IE 或 Visual Studio 的开发者工具)中看到这一点。
getAccessor方法将用于两个 porpoise:1) 从服务器响应中读取 JSON 数据 2) 在$("#prices").jqGrid('setGridParam',...对象中的$("#prices").jqGrid('setGridParam',...等情况下。您的问题中未包含的代码部分可能存在错误。
标签: jqgrid