标签:
问题描述:
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
(友情提示:访问该链接可能需要翻墙~~)
easyui1.4.2 formatter处理json内嵌数据undefined
标签:
原文地址:http://my.oschina.net/JustLoveIT/blog/474269