码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-07-03 17:36:44      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!