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.jsjquery.jqGrid.src.js 之前

以上是关于jqgrid 中的“未定义”消息,“b.jgrid.formatter 未定义”的主要内容,如果未能解决你的问题,请参考以下文章

jqGrid filterToolbar():无法读取未定义的属性“length”

jqgrid treeGrid无法读取未定义的属性'rowIndex'

为啥jqGrid不会加载?

带有 jqGrid 错误消息的警报

Jqgrid排序和“没有记录消息”不起作用

ng 构建消息“无法读取未定义的属性 'toLowerCase' 中的错误”