当前位置: 代码迷 >> 综合 >> extjs 2.3 修复 jsonstore 嵌套多级引用数据NULL的BUG
  详细解决方案

extjs 2.3 修复 jsonstore 嵌套多级引用数据NULL的BUG

热度:10   发布时间:2023-12-18 17:27:42.0

Ext版本:2.3.0

搜索到一篇有用的链接是:

JsonStore and nested/multi level data in a GridPanel


我在使用Ext.grid.GridPanel时,用到了多级JSON。

如:

{
"data": [
{"id" : 1,"amount" : 100,"costumer" : {"id" : 123,"name" : "Luis Valdés"}
},
{"id" : 2,"amount" : 100
}
]
}

在定义列时有 {header:'id',dataIndex:'id'},
{header:'amount',dataIndex:'amount'},
{header:'cutomerid','dataIndex:'customer.id'},
{header:'customerName',dataIndex:'customer.name'}

当customer不为空时都正常,空的时候就显示不出来。解决办法如下,将Ext.data.JsonReader的getJsonAccessor现有方法:

    getJsonAccessor: function(){var re = /[\[\.]/;return function(expr) {try {return(re.test(expr))? new Function("obj", "return obj." + expr): function(obj){return obj[expr];};} catch(e){}return Ext.emptyFn;};}(),

替换为:
    getJsonAccessor: function(){var re = /[\[\.]/;return function(expr) {try {return(re.test(expr))? new Function("obj", "try{return obj." + expr+"}catch(e){}return '';"): function(obj){return obj[expr];};} catch(e){}return Ext.emptyFn;};}(),

即可解决。

  相关解决方案