zoukankan      html  css  js  c++  java
  • 解决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文件后加修补补丁

      1 /**
      2 * The Patch for jQuery EasyUI 1.4
      3 */
      4 (function($){
      5     var plugin = $.fn._size;
      6     $.fn._size = function(options, parent){
      7         if (typeof options != 'string'){
      8             return this.each(function(){
      9                 parent = parent || $(this).parent();
     10                 if (parent.length){
     11                     plugin.call($(this), options, parent);
     12                 }
     13             });
     14         } else if (options == 'unfit'){
     15             return this.each(function(){
     16                 var p = $(this).parent();
     17                 if (p.length){
     18                     plugin.call($(this), options, parent);
     19                 }
     20             });
     21         } else {
     22             return plugin.call(this, options, parent);
     23         }
     24     };
     25 })(jQuery);
     26 (function($){
     27  $.map(['validatebox','textbox','filebox','searchbox',
     28             'combo','combobox','combogrid','combotree',
     29             'datebox','datetimebox','numberbox',
     30             'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){
     31         if ($.fn[plugin]){
     32             if ($.fn[plugin].defaults.events){
     33                 $.fn[plugin].defaults.events.click = function(e){
     34                     if (!$(e.data.target).is(':focus')){
     35                         $(e.data.target).trigger('focus');
     36                     }
     37                 };
     38             }
     39         }
     40     });
     41     $.fn.combogrid.defaults.height = 22;
     42  $(function(){
     43         $(document).bind('mousewheel.combo', function(e){
     44             $(e.target).trigger('mousedown.combo');
     45         });
     46     });
     47 })(jQuery);
     48 (function($){
     49  $.extend($.fn.form.methods, {
     50      clear: function(jq){
     51          return jq.each(function(){
     52              var target = this;
     53              $('input,select,textarea', target).each(function(){
     54                     var t = this.type, tag = this.tagName.toLowerCase();
     55                     if (t == 'text' || t == 'hidden' || t == 'password' || tag == 'textarea'){
     56                         this.value = '';
     57                     } else if (t == 'file'){
     58                         var file = $(this);
     59                         if (!file.hasClass('textbox-value')){
     60                             var newfile = file.clone().val('');
     61                             newfile.insertAfter(file);
     62                             if (file.data('validatebox')){
     63                                 file.validatebox('destroy');
     64                                 newfile.validatebox();
     65                             } else {
     66                                 file.remove();
     67                             }
     68                         }
     69                     } else if (t == 'checkbox' || t == 'radio'){
     70                         this.checked = false;
     71                     } else if (tag == 'select'){
     72                         this.selectedIndex = -1;
     73                     }
     74                 });
     75                 var t = $(target);
     76              var plugins = ['textbox','combo','combobox','combotree','combogrid','slider'];
     77              for(var i=0; i<plugins.length; i++){
     78                  var plugin = plugins[i];
     79                  var r = t.find('.'+plugin+'-f');
     80                  if (r.length && r[plugin]){
     81                      r[plugin]('clear');
     82                  }
     83              }
     84              $(target).form('validate');
     85             });
     86         }
     87     });
     88 })(jQuery);
     89 (function($){
     90  function setSize(target, param){
     91      var opts = $.data(target, 'linkbutton').options;
     92         if (param){
     93             $.extend(opts, param);
     94         }
     95         if (opts.width || opts.height || opts.fit){
     96             var btn = $(target);
     97             var parent = btn.parent();
     98             var isVisible = btn.is(':visible');
     99             if (!isVisible){
    100                 var spacer = $('<div style="display:none"></div>').insertBefore(target);
    101                 var style = {
    102                     position: btn.css('position'),
    103                     display: btn.css('display'),
    104                     left: btn.css('left')
    105                 };
    106                 btn.appendTo('body');
    107                 btn.css({
    108                     position:'absolute',
    109                     display:'inline-block',
    110                     left:-20000
    111                 });
    112             }
    113             btn._size(opts, parent);
    114             var left = btn.find('.l-btn-left');
    115             left.css('margin-top', 0);
    116             left.css('margin-top', parseInt((btn.height()-left.height())/2)+'px');
    117             if (!isVisible){
    118                 btn.insertAfter(spacer);
    119                 btn.css(style);
    120                 spacer.remove();
    121             }
    122         }
    123     }
    124     var plugin = $.fn.linkbutton;
    125  $.fn.linkbutton = function(options, param){
    126         if (typeof options != 'string'){
    127             return this.each(function(){
    128                 plugin.call($(this), options, param);
    129                 setSize(this);
    130             });
    131         } else {
    132             return plugin.call(this, options, param);
    133         }
    134     };
    135     $.fn.linkbutton.methods = plugin.methods;
    136  $.fn.linkbutton.defaults = plugin.defaults;
    137     $.fn.linkbutton.parseOptions = plugin.parseOptions;
    138  $.extend($.fn.linkbutton.methods, {
    139      resize: function(jq, param){
    140          return jq.each(function(){
    141              setSize(this, param);
    142          });
    143      }
    144  });
    145 })(jQuery);
    146 (function($){
    147     var plugin = $.fn.dialog;
    148     $.fn.dialog = function(options, param){
    149         var result = plugin.call(this, options, param);
    150         if (typeof options != 'string'){
    151             this.each(function(){
    152                 var opts = $(this).panel('options');
    153                 if (isNaN(parseInt(opts.height))){
    154                     $(this).css('height', '');
    155                 }
    156                 var onResize = opts.onResize;
    157                 opts.onResize = function(w, h){
    158                     onResize.call(this, w, h);
    159                     if (isNaN(parseInt(opts.height))){
    160                         $(this).css('height', '');
    161                     }
    162                     var shadow = $.data(this, 'window').shadow;
    163                     if (shadow){
    164                         var cc = $(this).panel('panel');
    165                         shadow.css({
    166                              cc._outerWidth(),
    167                             height: cc._outerHeight()
    168                         });
    169                     }
    170                 };
    171                 if (opts.closed){
    172                     var pp = $(this).panel('panel');
    173                     pp.show();
    174                     $(this).panel('resize');
    175                     pp.hide();
    176                 }
    177             });
    178         }
    179         return result;
    180     };
    181     $.fn.dialog.methods = plugin.methods;
    182     $.fn.dialog.parseOptions = plugin.parseOptions;
    183     $.fn.dialog.defaults = plugin.defaults;
    184 })(jQuery);
    185 (function($){
    186  function createTab(container, pp, options) {
    187      var state = $.data(container, 'tabs');
    188         options = options || {};
    189         // create panel
    190         pp.panel({
    191             border: false,
    192             noheader: true,
    193             closed: true,
    194             doSize: false,
    195             iconCls: (options.icon ? options.icon : undefined)
    196         });
    197         var opts = pp.panel('options');
    198         $.extend(opts, options, {
    199          onLoad: function(){
    200              if (options.onLoad){
    201                  options.onLoad.call(this, arguments);
    202              }
    203              state.options.onLoad.call(container, $(this));
    204             }
    205         });
    206         var tabs = $(container).children('div.tabs-header').find('ul.tabs');
    207      opts.tab = $('<li></li>').appendTo(tabs);  // set the tab object in panel options
    208         opts.tab.append(
    209                 '<a href="javascript:void(0)" class="tabs-inner">' +
    210                 '<span class="tabs-title"></span>' +
    211                 '<span class="tabs-icon"></span>' +
    212                 '</a>'
    213         );
    214         $(container).tabs('update', {
    215          tab: pp,
    216          options: opts
    217      });
    218  }
    219  function addTab(container, options) {
    220      var opts = $.data(container, 'tabs').options;
    221         var tabs = $.data(container, 'tabs').tabs;
    222      if (options.selected == undefined) options.selected = true;
    223      var pp = $('<div></div>').appendTo($(container).children('div.tabs-panels'));
    224      tabs.push(pp);
    225      createTab(container, pp, options);
    226      opts.onAdd.call(container, options.title, tabs.length-1);
    227      $(container).tabs('resize');
    228         if (options.selected){
    229             $(container).tabs('select', tabs.length-1);
    230         }
    231     }
    232     $.extend($.fn.tabs.methods, {
    233         add: function(jq, options){
    234             return jq.each(function(){
    235                 addTab(this, options);
    236             });
    237         }
    238     });
    239 })(jQuery);
    240 (function($){
    241  $.extend($.fn.menubutton.methods, {
    242      enable: function(jq){
    243          return jq.each(function(){
    244              $(this).data('menubutton').options.disabled = false;
    245                 $(this).linkbutton('enable');
    246          });
    247      }
    248  });
    249 })(jQuery);
    250 (function($){
    251     var onAfterRender = $.fn.datagrid.defaults.view.onAfterRender;
    252     $.extend($.fn.datagrid.defaults.view, {
    253         updateRow: function(target, rowIndex, row){
    254             var opts = $.data(target, 'datagrid').options;
    255             var rows = $(target).datagrid('getRows');
    256             var oldStyle = _getRowStyle(rowIndex);
    257             $.extend(rows[rowIndex], row);
    258             var newStyle = _getRowStyle(rowIndex);
    259             var oldClassValue = oldStyle.c;
    260             var styleValue = newStyle.s;
    261             var classValue = 'datagrid-row ' + (rowIndex % 2 && opts.striped ? 'datagrid-row-alt ' : ' ') + newStyle.c;
    262             function _getRowStyle(rowIndex){
    263                 var css = opts.rowStyler ? opts.rowStyler.call(target, rowIndex, rows[rowIndex]) : '';
    264                 var classValue = '';
    265                 var styleValue = '';
    266                 if (typeof css == 'string'){
    267                     styleValue = css;
    268                 } else if (css){
    269                     classValue = css['class'] || '';
    270                     styleValue = css['style'] || '';
    271                 }
    272                 return {c:classValue, s:styleValue};
    273             }
    274             function _update(frozen){
    275                 var fields = $(target).datagrid('getColumnFields', frozen);
    276                 var tr = opts.finder.getTr(target, rowIndex, 'body', (frozen?1:2));
    277                 var checked = tr.find('div.datagrid-cell-check input[type=checkbox]').is(':checked');
    278                 tr.html(this.renderRow.call(this, target, fields, frozen, rowIndex, rows[rowIndex]));
    279                 tr.attr('style', styleValue).removeClass(oldClassValue).addClass(classValue);
    280                 if (checked){
    281                     tr.find('div.datagrid-cell-check input[type=checkbox]')._propAttr('checked', true);
    282                 }
    283             }
    284             _update.call(this, true);
    285             _update.call(this, false);
    286             $(target).datagrid('fixRowHeight', rowIndex);
    287         },
    288         onAfterRender: function(target){
    289             onAfterRender.call($.fn.datagrid.defaults.view, target);
    290             setTimeout(function(){
    291                 var opts = $(target).datagrid('options');
    292                 opts.pageNumber = opts.pageNumber || 1;
    293             },0);
    294         }
    295     });
    296     $.fn.datagrid.defaults.loader = function(param, success, error){
    297         var opts = $(this).datagrid('options');
    298         if (!opts.url) return false;
    299         if (opts.pagination && opts.pageNumber == 0){
    300             opts.pageNumber = 1;
    301             param.page = 1;
    302         }
    303         if (param.page == 0){
    304             return false;
    305         }
    306         $.ajax({
    307             type: opts.method,
    308             url: opts.url,
    309             data: param,
    310             dataType: 'json',
    311             success: function(data){
    312                 success(data);
    313             },
    314             error: function(){
    315                 error.apply(this, arguments);
    316             }
    317         });
    318     };
    319 })(jQuery);
    320 (function($){
    321  $.fn.numberbox.defaults.filter = function(e){
    322         var opts = $(this).numberbox('options');
    323         var s = $(this).numberbox('getText');
    324      if (e.which == 45){    //-
    325          return (s.indexOf('-') == -1 ? true : false);
    326      }
    327      var c = String.fromCharCode(e.which);
    328      if (c == opts.decimalSeparator){
    329          return (s.indexOf(c) == -1 ? true : false);
    330      } else if (c == opts.groupSeparator){
    331          return true;
    332      } else if ((e.which >= 48 && e.which <= 57 && e.ctrlKey == false && e.shiftKey == false) || e.which == 0 || e.which == 8) {
    333          return true;
    334      } else if (e.ctrlKey == true && (e.which == 99 || e.which == 118)) {
    335          return true;
    336      } else {
    337          return false;
    338      }
    339  };
    340 })(jQuery);
  • 相关阅读:
    转载:Android SQLite数据库版本升级原理解析
    Android可移动的Button
    Android详细目录结构
    自动化测试(二)
    不使用if else
    C# 如何实现自己的FormEditor XML Protocol
    C#中的析构函数,GC和IDisposable的用法
    Java中生成和解析JSON
    GCMS笔记
    Android ConstraintLayout的使用(二)
  • 原文地址:https://www.cnblogs.com/zzgblog/p/flyreaver.html
Copyright © 2011-2022 走看看