EasyUI Forum
May 03, 2024, 09:55:37 AM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News:
 
  Home Help Search Login Register  
  Show Posts
Pages: [1] 2 3 ... 6
1  General Category / General Discussion / 建议给 tree, treegrid 增加 loadListData 方法 on: October 16, 2014, 12:44:54 AM
loadListDdata(Array, idField, parentField) 是对 loadData() 的封装,
能接收简单列表风格的 json 数据, 然后转成 tree 结构, 内部调用 loadData()

这样后台 java 的处理逻辑会大大简化.
2  General Category / Bug Report / Re: 初始化顺序的问题不太理解 on: September 18, 2014, 10:23:34 PM
问题的原因就是调用 setValues 时, easyui 还没有初始化完毕.
但是为什么呢? 上面不是调用了 $("input").combobox({ }) 吗?
3  General Category / General Discussion / form 内置 _loadCombo 对 multiple 处理的建议 on: September 12, 2014, 08:31:05 PM
if (c[type]('options').multiple){
    // TODO: 如果 val 是字符串不是数组, 则尝试按分隔符分割一下, 因为后台传过来的多个值可能是合并后的字符串

    c[type]('setValues', val);
} else {
    c[type]('setValue', val);
}
4  General Category / Bug Report / 初始化顺序的问题不太理解 on: September 04, 2014, 06:50:34 PM
<input type='text' value='1' />
<input type='text' value='2' />

方案1: 没问题
$("input").combobox({

}).combobox("setValues", ['1','2','3']);


方案2: 会报错
$("input").combobox({
   xxx
});

$("input").combobox("setValues", ['1','2','3']);

Firefox 提示: TypeError: $.data(...) is undefined

方案2里感觉 combobox 控件还没有初始化完毕, 这是为什么?
5  General Category / General Discussion / Re: combo 多选处理的建议 on: September 03, 2014, 10:52:44 PM
对多值的情况, 前台如何组织代码和解析?
   <!-- 单值的没问题 -->
   <input type='text' value='1' />
   
   <!-- 多值的情况不能解析, 这样开发模型就不一致, 希望 easyui 未来能够支持 -->
   <input type='text' value='1,2,3' />
   
   <script>
      var data = [{'text': 'java1',   'value': '1'   },
                  {'text': 'java2',   'value': '2'   },
                  {'text': 'java3',   'value': '3'   }];
      
      $("input").combobox({
         multiple: true,
         separator: ',',
         data: data
      });
      
   </script>



6  General Category / General Discussion / combo 多选处理的建议 on: September 03, 2014, 08:36:06 PM
combo multiple selection = true
在多选时, 生成多个 hidden 控件来记录当前选中的值.
感觉这种方案会增加后台保存, 以及前台显示的负担, 能否让开发员选择另外一种方案:

用一个 hidden 控件存多个值, 中间用分隔符隔开, 这样后台直接保存就可以了, 否则还得自己把数组拼成一个字符串保存
前台加载数据时, 如果 combo 控件启用了 multiple, 则 setValue 时, 先用分隔符 split 一下, 然后传给 setValues

我这个方案的实质是, 多选的值也是用一个控件来处理的, 感觉总体上处理模型更统一些.



7  General Category / General Discussion / Re: datagrid 如何用鼠标调整列的顺序? on: August 06, 2014, 11:05:57 PM
datagrid 能否增加调整列顺序的 API ?

目前是调整完毕后重建 datagrid , 用户体验不够完美.


8  General Category / General Discussion / datagrid 如何用鼠标调整列的顺序? on: August 06, 2014, 08:17:14 PM
用鼠标拖动标题栏, 修改 datagrid 列的显示顺序.
9  General Category / General Discussion / 希望 menubutton 支持 onShow 事件 on: August 06, 2014, 01:37:55 AM
menubutton 完全没有事件的支持,
menubutton 也没有提供获取 menu 对象的方法

我想给 onShow 事件写代码, 如何做呢?



10  General Category / General Discussion / menu appendItem 能否改一下, 支持自定义属性? on: August 06, 2014, 01:32:12 AM
menu 的 appendItem 方法, 对传入的 item 参数仅支持固定的几个属性, 传入以下红色部分, 在 onClick 里取不到
cmenu.menu('appendItem', {
  parent: item.target,
  type: "align",
  text: align.text,
  value: align.value
});

onClick: function(item){
  alert(item.type)
}

目前只能通过已知的 id, name 去中转, 不方面.
easyui 未来能否支持, 这样会更灵活.

11  General Category / Bug Report / v1.4 menubutton 的 duration 问题 on: August 06, 2014, 01:17:31 AM
v1.4 里menu 加入了 duration, 但是与 menubutton 的 duration 应该区分开才好.

我参照下面的帖子设置了 menubutton  duration:100000000
http://www.jeasyui.com/forum/index.php?topic=1926.0

但是发现鼠标离开菜单后, menu 不消失, 经测试, menu 的 duration 好像也改成了 100000000.

所以 menu 与 menubutton 的 duration 参数应该分开控制
一个控制显示, 一个控制隐藏


12  General Category / Bug Report / [已解决] v1.4 里 NumberBox 无法输入小数点 on: August 05, 2014, 11:42:12 PM
NumberBox 无法输入小数点
13  General Category / General Discussion / 提升 easyui 创建 combo 的速度 40% 以上 on: August 05, 2014, 01:38:14 AM
如果一个表单里有大量的 combo 控件(20个以上), 则 combo 的性能影响就开始凸显.
研究了一下 easyui 的 combo 创建代码, 把性能提升 40% 以上是完全可行的,

我找到的 combo 代码版本比较旧,  只是用来说明问题吧,
原 combo 代码最大的性能瓶颈在于 init() 里调用了 setSize(target, width);
只要注释掉该函数, 性能立即提升 40%以上  Grin;

该函数做了2件事:
1) 计算 combo-text 的宽度
2) 计算 panel 的尺寸

其中第2步完全没必要在 init 时计算, 第1步也有优化的余地. 我的改进方案如下:

        // 传入 options 参数
        function init(target, opts){
                $(target).hide();
               
                var span = $('<span class="combo"></span>').insertAfter(target);
                var input = $('<input type="text" class="combo-text">').appendTo(span);
                $('<span><span class="combo-arrow"></span></span>').appendTo(span);
                $('<input type="hidden" class="combo-value">').appendTo(span);
               
                // jxc: 计算input的宽度
                var width = calcInputWidth(opts);
                input.width(width);

               
                var panel = $('<div class="combo-panel"></div>').appendTo('body');
                panel.panel({
                        doSize:false,
                        closed:true,
                        style:{
                                position:'absolute'
                        },
                        onOpen:function(){
                              // jxc: open 时再计算 panel 尺寸
                              panel.panel('resize', {
                                   width: (opts.panelWidth ? opts.panelWidth : span.outerWidth()),
                                   height: opts.panelHeight
                              });

                              
                                $(this).panel('resize');
                        }
                });
               
                var name = $(target).attr('name');
                if (name){
                        span.find('input.combo-value').attr('name', name);
                        $(target).removeAttr('name').attr('comboName', name);
                }
                input.attr('autocomplete', 'off');
               
                return {
                        combo: span,
                        panel: panel
                };
        }
       

        // 缓存input和arrow的宽度, 避免重复计算

        var inputWidth = null;
        var arrowWidth = null;
        function calcInputWidth(opts){
           if (!inputWidth) {
             var input = $('<input type="text" class="combo-text">').appendTo("body");
             var arrow = $('<span class="combo-arrow">').appendTo("body");
             inputWidth = input.outerWidth();
             arrowWidth = arrow.outerWidth();
             input.remove();
             arrow.remove();
          }
           
           if (isNaN(opts.width)){
                opts.width = inputWidth;
           }
           
           var width = opts.width - arrowWidth;
           return width;
        }


初始化部分的修改

// jxc: init 调用, 传入 options

var opts = $.extend({}, $.fn.combo.defaults, parseOptions(this), options);
var r = init(this, opts);

state = $.data(this, 'combo', {
        options: opts,
        combo: r.combo,
        panel: r.panel
});

// jxc: init 时不再调用 setSize
// setSize(this);
14  General Category / General Discussion / 对 easyui 1.4 的试用反馈 on: August 02, 2014, 07:36:30 AM
1.4 版悄然发布, 感谢作者的不懈努力. 原来 stworthy 不回答问题, 是忙着开发 1.4 去了.  Grin
经过一天的尝试, 基本把 1.4 集成到项目里, 下面是我的试用体会.

1.4 新特性
   textbox 的出现太赞了, 终于统一了 form 里各个元素的外观样式
   而且整合了 prompt 和 button , textbox 似乎是从 searchbox 改造而来的?

   各个控件获得焦点后, 边框有光晕效果, 还不错
   filebox 也很赞, datetimespinner 正是我需要的, 不过今天没时间, 明天尝试用一下

   combo 的 panelMaxHeight 属性, 我曾提过用css控制的方案, 不过这个对浏览器兼容更好些, 而且能够单独控制

   required 必填项提示, 去掉了难看的惊叹号图标, 改用粉红色背景标识, 还不错
   easyui 控件只读后, 背景色还是白色, 应把只读项与可编辑项目区分开, 如:
      input[readonly]{background-color: #f4f0f0;}

1.4 发布日志里没写, 实际测试已解决的:
   在有 layout 的页面里打开一个fit=true 的 dialog, 则浏览器窗口缩放时 dialog 不缩放的问题已解决


1.4 新的问题和建议
   textbox 在录入时, 回车执行查询操作, 但是值没有提交, 只有textbox失去焦点时才把值赋给 textbox-value 控件
      我发现 datebox 的 onchange 是在输入时就触发的, 并且 keyHandler 支持 enter
      建议 textbox 也统一编程模型, 统一控件的事件特性

      我的临时解决方案, 自己写 keydown 处理
      var text = el.textbox("getText");
      el.textbox("setValue", text);

   filebox 在 chrome 里文字显示位置有问题, 向上错位了

   必填项提示的国际化字符串有遗漏, 需要加入下面的
      if ($.fn.textbox){
         $.fn.textbox.defaults.missingMessage = '该输入项为必输项';
      }

   combo-arrow 不应该获得焦点
      在按tab键跳转时, 焦点先跳到combo-arrow上, 再按一次tab才进入combo-text, 操作麻烦
      建议设置 combo-arrow 的 tabIndex=-1

   combogrid 的高度似乎有问题,  combogrid 的 padding 是 4px, 其它控件都是 2px
      padding-bottom: 4px;
      padding-top: 4px;

   combotree 仍然无法实现在 onlyLeafCheck=true 并且 checkbox=false 的情况下, 即单选时, 控制只能选择叶子节点
      onlyLeafCheck 参数只是控制了多选时不生成复选框
      而实际项目有这样的需求, 即用户不能选择分类, 只能选择叶子节点

   datagrid 控件, 为什么行号显示 NaN 呢?
      必须显式设置 pageSize: 30 才行, 也可能是其他参数冲突导致?

   textbox 初始化时, 如果 multiline = true , 并且没有设置 width 和 height 参数, 并且 target 是 textarea, 则建议取 textarea 的 height


   combobox
      为了实现汉字拼音检索的支持, 我复写了 doQuery 方法, 但是 doQuery 里调用了 request 方法, 让我很受伤
      if (opts.mode == 'remote'){
         request(target, null, {q:q}, true);
      }

      request 方法没有暴露. 复写的 doQuery 里如何调用这个 request 呢?

      我的方案是直接修改 easyui 1.4 压缩后的代码, 把 request 接口暴露出来.

      通过下面的参考语句, 定位要修改的位置
      查找到 .find("div.combobox-item,div.combobox-group").hide();
      往上找到下面的内容
      if(opts.mode=="remote"){
            _8f9(_8fe,null,{q:q},true);   // 则 _8f9 就是request编译后的方法名
      }
      
      再找到 $.fn.combobox.defaults=$.extend({},$.fn.combo.defaults
      往下找到 mode:"local",method:"post",
      手工插入: request:_8f9,

      这样, 就把 request 方法暴露出来, 然后在 doQuery 里就能调用 request 了
      if (opts.mode == 'remote'){
         $.fn.combobox.defaults.request(target, null, {q:q}, true);
      }

      希望 stworthy 给一个更好的方案.  Grin
15  General Category / News / Re: jQuery EasyUI 1.4 Release on: August 01, 2014, 05:11:37 PM
easyui 开发组给我们的感动是, 他们虽然不回答你的问题, 但是却在吸收你的建议, 并努力改进.  Grin

Pages: [1] 2 3 ... 6
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!