您的位置:首页 > 产品设计 > UI/UE

easyui1.4.2 formatter处理json内嵌数据undefined

2015-07-03 16:52 591 查看
问题描述:

easyui升级到1.4.2后,原来使用的获取json嵌套数据的函数“formatter: function (value,row) { return row.business.region }”不好使了,datagrid初始化加载数据的时候,会报错提示“region” undefined,数据无法正常显示。

原因:

The 'formatter' function is called by $.fn.datagrid.defaults.view.renderRow. At the first time, the datagrid will call 'renderRow' with empty row data to render an empty row.

formatter函数第一遍加载的时候,datagrid会调用renderRow方法,这时候各行数据还没有加载,向formatter传递的是一个空行,所以“row.business.region”中的“region”为undefined。(不知道理解的对不对~)

解决方案:

‍‍If you really want to prevent the 'formatter' function from calling more than once, please override the 'renderEmptyRow' function of view to solve this issue.‍‍

简单说就是重写easyui的renderEmptyRow方法,代码如下:(亲测可用~~)

(function($){
var renderEmptyRow = $.fn.datagrid.defaults.view.renderEmptyRow;
$.extend($.fn.datagrid.defaults.view, {
renderEmptyRow:function(target){
var fields = $(target).datagrid('getColumnFields');
for(var i=0; i<fields.length; i++){
var col = $(target).datagrid('getColumnOption', fields[i]);
col.formatter1 = col.formatter;
col.styler1 = col.styler;
col.formatter = col.styler = undefined;
}
renderEmptyRow.call(this, target);
for(var i=0; i<fields.length; i++){
var col = $(target).datagrid('getColumnOption', fields[i]);
col.formatter = col.formatter1;
col.styler = col.styler1;
col.formatter1 = col.styler1 = undefined;
}
}
})
})(jQuery);


参考:

http://www.jeasyui.com/forum/index.php?topic=4572.0

(友情提示:访问该链接可能需要翻墙~~)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: