解决easy ui两次请求服务器的问题
目前该问题已经在1.4.1版本中解决了
本文引用自:http://www.cnblogs.com/Reaver/p/4056770.html,原文博主:flyreaver
我在使用过程中遇到了easy ui1.4版本的一个问题,使用datagrid的时候当请求数据为0条时,会重新请求一次后台。上面这位兄弟帮我解决了这个问题,表示感谢。
为了防止原文丢失,作此备份:
easyui datagrid 1.4 当total为0时,请求两次url问题
框架问题:需要在easyui文件后加修补补丁
/**
* 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<plugins.length; i++){
var plugin = plugins[i];
var r = t.find('.'+plugin+'-f');
if (r.length && r[plugin]){
r[plugin]('clear');
}
}
$(target).form('validate');
});
}
});
})(jQuery);
(function($){
function setSize(target, param){
var opts = $.data(target, 'linkbutton').options;
if (param){
$.extend(opts, param);
}
if (opts.width || opts.height || opts.fit){
var btn = $(target);
var parent = btn.parent();
var isVisible = btn.is(':visible');
if (!isVisible){
var spacer = $('<div style="display:none"></div>').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 = $('<li></li>').appendTo(tabs); // set the tab object in panel options
opts.tab.append(
'<a href="javascript:void(0)" class="tabs-inner">' +
'<span class="tabs-title"></span>' +
'<span class="tabs-icon"></span>' +
'</a>'
);
$(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 = $('<div></div>').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);
解决easy ui两次请求服务器的问题的更多相关文章
- 解决easy ui 1.4datebox控件不能清空的问题
用easy ui遇到这个问题,在网上找到了解决方案,不过是1.3.6版本的.现提供1.4版本的修改的具体位置和代码. 我们用的是这个 修改位置:12739行,添加代码: , { text: funct ...
- easy ui Tree请求跨域数据
扯淡篇: jQuery EasyUI为提供了大多数UI控件的使用,如:accordion,combobox,menu,dialog,tabs,validatebox,datagrid,window,t ...
- axios发送两次请求原因及解决方法
axios发送两次请求原因及解决方法 最近Vue项目中使用axios组件,在页面交互中发现axios会发送两次请求,一种请求方式为OPTIONS,另外一种为自己设置的. 如图: 什么是CORS通信? ...
- JS发送跨域Post请求出现两次请求的解决办法
原文地址: http://www.cnblogs.com/JimmyBright/p/7681097.html 所有跨域的js在提交post请求的时候,如果服务端设置了可跨域访问 public sta ...
- easy ui 异步上传文件,跨域
easy ui 跨域上传文件,代码如下: 1.html代码:(这段代码是个win窗体,我在点击上传图片按钮然后弹出一个上传图片的窗体,选择图片再进行上传,这样在form提交时,提交的参数会少一点.) ...
- UI进阶 数据请求
一.HTTP和HTTPS协议 URL URL全称是Uniform Resource Locator(统一资源定位符)通过1个URL,能找到互联网上唯一的1个资源,也被称为网址,因特网上标准的资源网址 ...
- JQuery Easy Ui (Tree树)详解(转)
第一讲:JQuery Easy Ui到底是什么呢? 首先咱们知道JQuery是对Java Script的封装,是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等.. JQuery ui是在j ...
- atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 。打开浏览服务器文件夹java .net php
atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 .打开浏览服务器文件夹java .net php 1. 环境:::项目java web,需要打开浏览服 ...
- JQuery Easy Ui dataGrid 数据表格 ---制作查询下拉菜单
JQuery Easy Ui dataGrid 数据表格 数据表格 - DataGrid 继承$.fn.panel.defaults,使用$.fn.datagrid.defaults重载默认值.. 数 ...
随机推荐
- Android学习笔记(第一篇)编写第一个程序Hello World+Activity
PS:终于开始正式的搞Android了...无人带的一介菜鸟,我还是自己默默的努力吧... 学习内容: 1.编写第一个Hello World程序.. 学习Android,那么就需要有一个编译器来集 ...
- 基于HTML5的电信网管3D机房监控应用
先上段视频,不是在玩游戏哦,是规规矩矩的电信网管企业应用,嗯,全键盘的漫游3D机房: 随着PC端支持HTML5浏览器的普及,加上主流移动终端Android和iOS都已支持HTML5技术,新一代的电信网 ...
- 通过刷bios的方式在win8.1平板上启动windows phone模拟器
最近买了个Windows8.1平板电脑,不是Surface Pro,太贵,而是国产的乐凡F2(64G.4G内存),CPU是赛扬U1037.最开始安装Visual Studio2013以及其他开发工具都 ...
- 关于 getWriter() has already been called for this response 的错误解决办法
java.lang.IllegalStateException: getWriter() has already been called for this response 今天在做显示图片的时候,( ...
- CSS--复习之旅(一)
CSS概述 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分 ...
- appt查看apk信息
aapt dump badging app-debug.apk
- 使用HtmlAgilityPack爬取网站信息并存储到mysql
前言:打算做一个药材价格查询的功能,但刚开始一点数据都没有靠自己找信息录入的话很麻烦的,所以只有先到其它网站抓取存到数据库再开始做这个了. HtmlAgilityPack在c#里应该很多人用吧,简单又 ...
- 【JS复习笔记】05 正则表达式
好吧,正则表达式,我从来没记过.以前要用的时候都是网上Copy一下的. 这里还是扯一下吧,以后要是有要用到的正则表达式那么就收集到这个帖子里.(尽管我认为不会,因为我根本就不是一个专业的前端,我只是来 ...
- AssemblyInfo文件
程序生成版本信息 AssemblyInfo.cs主要用来设定生成的有关程序集的常规信息dll文件的一些参数 请看以下具体说明: //备注: [assembly:AssemblyDescription ...
- STL---Codeforces675D Tree Construction(二叉树节点的父亲节点)
Description During the programming classes Vasya was assigned a difficult problem. However, he doesn ...