jqgrid 中的“未定义”消息,“b.jgrid.formatter 未定义”
Posted
技术标签:
【中文标题】jqgrid 中的“未定义”消息,“b.jgrid.formatter 未定义”【英文标题】:"Undefined" message in jqgrid, "b.jgrid.formatter is undefined" 【发布时间】:2012-06-30 19:38:09 【问题描述】:当我向 jqgrid 发送 JSON 响应时,我收到“未定义”消息,Firebug 告诉我:
b.jgrid.formatter is undefined
[Break On This Error]
...input===true)b(".ui-pg-input",l).val(a.p.page);h=a.p.toppager?"#sp_1"+m+",#sp_1...
这基本上不会告诉我太多。
当我发送空响应时会发生这种情况:
"total":0,"page":1,"records":0,"rows":[]
或响应记录。然后记录在网格中可见。显示此“未定义”消息后,我无法浏览页面,因为当然出现了代码中的错误。
正如@Oleg 所建议的,我在这里提供了更多信息:
-
这些是我正在使用的 javascript:
jquery.validate.min.js jquery.validate.unobtrusive.min.js jquery-1.5.1.min.js jquery-ui-1.8.11.min.js jquery.jqGrid.min.js ui/jquery.ui.core.js ui/jquery.ui.widget.js ui/jquery.ui.datepicker.js我的 javascript 源代码: var grid = jQuery("#list").jqGrid( 数据类型:'json', 标题:“交易记录”, 隐藏网格:'真', 发布数据: companyId: function () return $("#SelectedCompany").val(); , userId: function () return $("#SelectedUser").val(); , dateFromString: function () return $("#DateFrom").val(); , dateToString: function () return $("#DateTo").val(); , url: '@Url.Action("GetTransactionLogData")', mtype: 'GET', colNames: ['Ref.', 'TradeDate', 'Status', 'LegalEntity', ...], col型号:[ 名称:'参考',索引:'参考',宽度:'60', 名称:'TradeDate',索引:'TradeDate',宽度:'70', 名称:'状态',索引:'状态',宽度:'50', 名称:'LegalEntity',索引:'LegalEntity',宽度:'80', ... ], 寻呼机:$('#pager'), 行数:10, 高度:'100%' ); 我已经从 [this link][1] 下载了最新版本的 jqGrid,据说是 **4.4.0** 版本。
我该如何解决这个问题?
提前致谢。
【问题讨论】:
如果出现此类错误,您应该始终 1) 使用jquery.jqGrid.src.js
而不是 jquery.jqGrid.min.js
重复相同的操作 2) 您应该指定您使用的 jqGrid 的确切版本 3) 您应该包括列表您在页面上加载的 JavaScript 文件。加载顺序可能非常重要。 4) 你应该包含定义 jqGrid 的 JavaScript 代码。
嗨@Oleg,感谢您为我提供了我应该在此处展示的详细信息列表,以便与社区一起找到解决方案。
【参考方案1】:
重要的是包含grid.locale-en.js
之前 jquery.jqGrid.min.js
使jqGrid 工作。
另外,我建议您将gridview: true
选项添加到jqGrid 并将pager: $('#pager')
替换为pager: '#pager'
,因为jqGrid 只需要寻呼机的id 选择器。如果您使用pager: $('#pager')
,那么jqGrid 会将参数替换为pager: '#pager'
。所以pager: $('#pager')
这个表单作为jqGrid参数真的没有意义。
【讨论】:
@DevetiPutnik:$.jgrid.formatter
将在grid.locale-en.js
中定义,并将在jquery.jqGrid.src.js
中扩展和使用。所以文本“b.jgrid.formatter is undefined”可能只是因为你没有包含grid.locale-en.js
。您是否使用jquery.jqGrid.src.js
尝试过您的代码?你得到哪个错误以及jquery.jqGrid.src.js
的哪一行?
非常感谢!我重新排列了列表,现在一切正常!
很好@Oleg。我将您的解决方案添加到博客:blog.webdevilopers.net/… 谢谢
现在没有 JS 错误,但我看到“警告,请选择行”。这是返回列表为空的时候
@CsabaToth:对不起,但我不确定我是否理解正确。无论如何,语言文件 grid.locale-en.js
或其他 grid.locale-XX.js
应包含在 jquery.jqGrid.min.js
或 jquery.jqGrid.src.js
之前以上是关于jqgrid 中的“未定义”消息,“b.jgrid.formatter 未定义”的主要内容,如果未能解决你的问题,请参考以下文章
jqGrid filterToolbar():无法读取未定义的属性“length”