easyui datagrid 1.4版本请求两次

当返回的数据是{rows:[],total:0}时,datagrid会请求两次。

像这种框架自身的问题,问题本身就很难找出原因,最终也是google,在easyui社区里面找到解决方法


附件就是1.4版本修复bug的代码,这个只要在页面导入js后面加上这个js就够了(注意得放在easyui.min.js后面)


不能上传附件,郁闷

/**
 * The Patch for jQuery EasyUI 1.4
 */
(function($){
	var plugin = $.fn._size;
	$.fn._size = function(options, parent){
		if (typeof options != 'string'){
			return this.each(function(){
				parent = parent || $(this).parent();
				if (parent.length){
					plugin.call($(this), options, parent);
				}
			});
		} else if (options == 'unfit'){
			return this.each(function(){
				var p = $(this).parent();
				if (p.length){
					plugin.call($(this), options, parent);
				}
			});
		} else {
			return plugin.call(this, options, parent);
		}
	};
})(jQuery);

(function($){
	$.map(['validatebox','textbox','filebox','searchbox',
			'combo','combobox','combogrid','combotree',
			'datebox','datetimebox','numberbox',
			'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){
		if ($.fn[plugin]){
			if ($.fn[plugin].defaults.events){
				$.fn[plugin].defaults.events.click = function(e){
					if (!$(e.data.target).is(':focus')){
						$(e.data.target).trigger('focus');
					}
				};
			}
		}
	});
	$.fn.combogrid.defaults.height = 22;
	$(function(){
		$(document).bind('mousewheel.combo', function(e){
			$(e.target).trigger('mousedown.combo');
		});
	});
})(jQuery);

(function($){
	$.extend($.fn.form.methods, {
		clear: function(jq){
			return jq.each(function(){
				var target = this;
				$('input,select,textarea', target).each(function(){
					var t = this.type, tag = this.tagName.toLowerCase();
					if (t == 'text' || t == 'hidden' || t == 'password' || tag == 'textarea'){
						this.value = '';
					} else if (t == 'file'){
						var file = $(this);
						if (!file.hasClass('textbox-value')){
							var newfile = file.clone().val('');
							newfile.insertAfter(file);
							if (file.data('validatebox')){
								file.validatebox('destroy');
								newfile.validatebox();
							} else {
								file.remove();
							}
						}
					} else if (t == 'checkbox' || t == 'radio'){
						this.checked = false;
					} else if (tag == 'select'){
						this.selectedIndex = -1;
					}
				});
				
				var t = $(target);
				var plugins = ['textbox','combo','combobox','combotree','combogrid','slider'];
				for(var i=0; i
').insertBefore(target); var style = { position: btn.css('position'), display: btn.css('display'), left: btn.css('left') }; btn.appendTo('body'); btn.css({ position:'absolute', display:'inline-block', left:-20000 }); } btn._size(opts, parent); var left = btn.find('.l-btn-left'); left.css('margin-top', 0); left.css('margin-top', parseInt((btn.height()-left.height())/2)+'px'); if (!isVisible){ btn.insertAfter(spacer); btn.css(style); spacer.remove(); } } } var plugin = $.fn.linkbutton; $.fn.linkbutton = function(options, param){ if (typeof options != 'string'){ return this.each(function(){ plugin.call($(this), options, param); setSize(this); }); } else { return plugin.call(this, options, param); } }; $.fn.linkbutton.methods = plugin.methods; $.fn.linkbutton.defaults = plugin.defaults; $.fn.linkbutton.parseOptions = plugin.parseOptions; $.extend($.fn.linkbutton.methods, { resize: function(jq, param){ return jq.each(function(){ setSize(this, param); }); } }); })(jQuery); (function($){ var plugin = $.fn.dialog; $.fn.dialog = function(options, param){ var result = plugin.call(this, options, param); if (typeof options != 'string'){ this.each(function(){ var opts = $(this).panel('options'); if (isNaN(parseInt(opts.height))){ $(this).css('height', ''); } var onResize = opts.onResize; opts.onResize = function(w, h){ onResize.call(this, w, h); if (isNaN(parseInt(opts.height))){ $(this).css('height', ''); } var shadow = $.data(this, 'window').shadow; if (shadow){ var cc = $(this).panel('panel'); shadow.css({ width: cc._outerWidth(), height: cc._outerHeight() }); } }; if (opts.closed){ var pp = $(this).panel('panel'); pp.show(); $(this).panel('resize'); pp.hide(); } }); } return result; }; $.fn.dialog.methods = plugin.methods; $.fn.dialog.parseOptions = plugin.parseOptions; $.fn.dialog.defaults = plugin.defaults; })(jQuery); (function($){ function createTab(container, pp, options) { var state = $.data(container, 'tabs'); options = options || {}; // create panel pp.panel({ border: false, noheader: true, closed: true, doSize: false, iconCls: (options.icon ? options.icon : undefined) }); var opts = pp.panel('options'); $.extend(opts, options, { onLoad: function(){ if (options.onLoad){ options.onLoad.call(this, arguments); } state.options.onLoad.call(container, $(this)); } }); var tabs = $(container).children('div.tabs-header').find('ul.tabs'); opts.tab = $('
  • ').appendTo(tabs); // set the tab object in panel options opts.tab.append( '' + '' + '' + '' ); $(container).tabs('update', { tab: pp, options: opts }); } function addTab(container, options) { var opts = $.data(container, 'tabs').options; var tabs = $.data(container, 'tabs').tabs; if (options.selected == undefined) options.selected = true; var pp = $('
    ').appendTo($(container).children('div.tabs-panels')); tabs.push(pp); createTab(container, pp, options); opts.onAdd.call(container, options.title, tabs.length-1); $(container).tabs('resize'); if (options.selected){ $(container).tabs('select', tabs.length-1); } } $.extend($.fn.tabs.methods, { add: function(jq, options){ return jq.each(function(){ addTab(this, options); }); } }); })(jQuery); (function($){ $.extend($.fn.menubutton.methods, { enable: function(jq){ return jq.each(function(){ $(this).data('menubutton').options.disabled = false; $(this).linkbutton('enable'); }); } }); })(jQuery); (function($){ var onAfterRender = $.fn.datagrid.defaults.view.onAfterRender; $.extend($.fn.datagrid.defaults.view, { updateRow: function(target, rowIndex, row){ var opts = $.data(target, 'datagrid').options; var rows = $(target).datagrid('getRows'); var oldStyle = _getRowStyle(rowIndex); $.extend(rows[rowIndex], row); var newStyle = _getRowStyle(rowIndex); var oldClassValue = oldStyle.c; var styleValue = newStyle.s; var classValue = 'datagrid-row ' + (rowIndex % 2 && opts.striped ? 'datagrid-row-alt ' : ' ') + newStyle.c; function _getRowStyle(rowIndex){ var css = opts.rowStyler ? opts.rowStyler.call(target, rowIndex, rows[rowIndex]) : ''; var classValue = ''; var styleValue = ''; if (typeof css == 'string'){ styleValue = css; } else if (css){ classValue = css['class'] || ''; styleValue = css['style'] || ''; } return {c:classValue, s:styleValue}; } function _update(frozen){ var fields = $(target).datagrid('getColumnFields', frozen); var tr = opts.finder.getTr(target, rowIndex, 'body', (frozen?1:2)); var checked = tr.find('div.datagrid-cell-check input[type=checkbox]').is(':checked'); tr.html(this.renderRow.call(this, target, fields, frozen, rowIndex, rows[rowIndex])); tr.attr('style', styleValue).removeClass(oldClassValue).addClass(classValue); if (checked){ tr.find('div.datagrid-cell-check input[type=checkbox]')._propAttr('checked', true); } } _update.call(this, true); _update.call(this, false); $(target).datagrid('fixRowHeight', rowIndex); }, onAfterRender: function(target){ onAfterRender.call($.fn.datagrid.defaults.view, target); setTimeout(function(){ var opts = $(target).datagrid('options'); opts.pageNumber = opts.pageNumber || 1; },0); } }); $.fn.datagrid.defaults.loader = function(param, success, error){ var opts = $(this).datagrid('options'); if (!opts.url) return false; if (opts.pagination && opts.pageNumber == 0){ opts.pageNumber = 1; param.page = 1; } if (param.page == 0){ return false; } $.ajax({ type: opts.method, url: opts.url, data: param, dataType: 'json', success: function(data){ success(data); }, error: function(){ error.apply(this, arguments); } }); }; })(jQuery); (function($){ $.fn.numberbox.defaults.filter = function(e){ var opts = $(this).numberbox('options'); var s = $(this).numberbox('getText'); if (e.which == 45){ //- return (s.indexOf('-') == -1 ? true : false); } var c = String.fromCharCode(e.which); if (c == opts.decimalSeparator){ return (s.indexOf(c) == -1 ? true : false); } else if (c == opts.groupSeparator){ return true; } else if ((e.which >= 48 && e.which <= 57 && e.ctrlKey == false && e.shiftKey == false) || e.which == 0 || e.which == 8) { return true; } else if (e.ctrlKey == true && (e.which == 99 || e.which == 118)) { return true; } else { return false; } }; })(jQuery);


    你可能感兴趣的:(js/html/css)