使用jqGrid reloadGrid加载本地JSON时数据为空/无法填充问题
解决jqGrid reloadGrid加载本地JSON数据为空的问题
我来帮你排查下这个问题~首先看你的代码,其实存在几个可以调整的地方,咱们一步步来:
1. 去掉冗余的数据转换步骤
你的objstr本身就是一个包含数据对象的数组,完全不需要再用Object.keys(objstr).map(...)去生成col数组——这一步不仅多余,反而可能导致数据结构出问题(因为Object.keys遍历数组得到的是索引字符串,map后其实和原数组一样,但完全没必要多此一举)。
2. 确保colModel与数据字段严格匹配
这是最容易踩坑的点:jqGrid的colModel里的name属性必须和你JSON数据里的字段名大小写完全一致。比如你的数据里是id、Name、PackageCode、get,那colModel里对应的name就得是"id"、"Name"、"PackageCode"、"get",不能写成小写的"name"或者"packagecode",否则表格无法匹配到数据。
3. 优化reloadGrid的调用逻辑
调整setGridParam和trigger的顺序,同时加上分页重置参数,确保数据能正确渲染:
修正后的代码示例:
function FillGrid() { // 直接使用原数组,不需要额外转换 var objstr = [ { id: "12", Name: "Name 41", PackageCode: "8443123a", get: 315 }, { id: "22", Name: "Name 12", PackageCode: "8314423a", get: 585 }, { id: "32", Name: "Name 12", PackageCode: "8314423a", get: 56485 } ]; // 先设置data和datatype,再触发reloadGrid并重置到第一页 $("#jqg1") .setGridParam({ data: objstr, datatype: 'local' }) .trigger('reloadGrid', { page: 1 }); // 重置到第一页,避免分页导致数据不显示 }
额外检查点
- 确保调用
FillGrid时,jqGrid已经完成初始化(比如不要在DOM加载完成前调用) - 如果你的表格开启了分页,要确认
rowNum设置的值大于0,且数据条数符合分页逻辑 - 检查浏览器控制台是否有报错,比如colModel配置错误、表格ID不存在等问题
内容的提问来源于stack exchange,提问作者user2049855
相关产品推荐
相关产品推荐

