如题所述,在treegrid中,一次添加多个节点时,时间很长,但easyUI并无显示等待信息,让人以为是陷入了死循环,或者死机了,用户体验很差。

本来,treegrid(或者datagrid)有所谓的loadMsg,但只在加载数据时显示。添加节点,则不见有这种机制。

只能自己动手,丰衣足食了。

像很多次寻找答案一样,在网上搜索了许久,基本上都是一些互相抄袭,似是而非,不知所谓的垃圾。作者煞有介事地这样说,但有没有实际应用过,到底行不行,很让人怀疑。

或者只贴一点代码,缺乏足够的解释,让人变成丈二金刚。

经过一番努力,终于达到我自己想要的效果:

从一棵树中选中了许多节点,一次性复制到另一棵树。期间耗时比较长,会先显示等待信息;添加完成以后,等待消息消失。

没有代码我说个J8:

应用场景:

easyUI的一个对话框:

<div id="dlg_Add_template" class="easyui-dialog"   style=" width:600px; ">……</div>
<script type="text/javascript">
$('#dlg_Add_template').dialog('open');
</script>

这个对话框上有1个tree,1个treegrid。需要从tree上选择节点,复制到treegrid。

[javascript] view plaincopy
  1. function _loadwaiting(){//显示等待信息
  2. var wrap = $("#dlg_Add_template");
  3. $("<div class=\"datagrid-mask\"></div>").css({display:"block",width:wrap.width(),height:wrap.height()}).appendTo(wrap);
  4. $("<div class=\"datagrid-mask-msg\"></div>").html("please wait...").appendTo(wrap).css({display:"block",left:(wrap.width()-$("div.datagrid-mask-msg",wrap).outerWidth())/2,top:(wrap.height()-$("div.datagrid-mask-msg",wrap).outerHeight())/2});
  5. }
  6. function _removeloading(){//隐藏等待信息
  7. var wrap = $("#dlg_Add_template");
  8. wrap.find("div.datagrid-mask-msg").remove();
  9. wrap.find("div.datagrid-mask").remove();
  10. }

以上代码从参考文章摘取,但经过改写。原文是对easyUI的所谓扩展,仍然只支持数据加载才显示。

然后调用:

[javascript] view plaincopy
  1. function _copyTo() {
  2. _loadwaiting();//显示等待信息
  3. //将选中节点复制到目标树
  4. (代码略)
  5. _removeloading();//隐藏等待信息
  6. }

结果意料之中,开始复制节点时,等待信息根本没来得及显示,直到复制完成才一闪而过,根本没有达到应有的效果!

这时应引入异步机制,最好有回调函数!

但treegrid并无提供相应的事件。受阮一峰的文章启发,可以模拟一下,用setTimeout:

[javascript] view plaincopy
  1. function copy(){
  2. _loadwaiting();//显示等待信息
  3. setTimeout(_copyTo,500);//500毫秒后开始复制工作
  4. }
  5. }
  6. function _copyTo() {
  7. //将选中节点复制到目标树
  8. (代码略)
  9. _removeloading();//隐藏等待信息
  10. }

参考文章:

http://www.cnblogs.com/dreamcat/archive/2010/10/30/easyui_datagrid_mask.html

http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html

easyUI的treegrid添加节点(append)时间过长,设置等待(wait)遮罩效果的更多相关文章

  1. 实验:Oracle单节点RAC添加节点

    环境:RHEL 6.5 + Oracle 11.2.0.4 单节点RAC 需求:单节点RAC添加新节点 1.添加节点前的准备工作 2.正式添加节点 3.其他配置工作 1.添加节点前的准备工作 参考Or ...

  2. 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形菜单添加节点

    jQuery EasyUI 树形菜单 - 树形菜单添加节点 本教程向您展示如何附加节点到树形菜单(Tree).我们将创建一个包含水果和蔬菜节点的食品树,然后添加一些其他水果到已存在的水果节点. 创建食 ...

  3. EasyUI Tree添加节点

    创建foods tree首先,我们创建foods tree,代码像这样: <div style="width:200px;height:auto;border:1px solid #c ...

  4. Jquery EasyUI中treegrid

    Jquery EasyUI中treegrid的中右键菜单和一般按钮同时绑定事件时的怪异事件 InChatter系统开源聊天模块前奏曲   最近在研究WCF,又因为工作中的项目需要,要为现有的系统增加一 ...

  5. 第二百二十八节,jQuery EasyUI,TreeGrid(树形表格)组件

    jQuery EasyUI,TreeGrid(树形表格)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 TreeGrid(树形表格)组件的使 ...

  6. JQuery 添加节点

    Mark一段自己写的添加节点的代码 function reply2(){ $( "<div class=sec1-div5>"+"<div class= ...

  7. 获取EasyUI的treegrid的checkbox所有已勾选的数据

    EasyUI为TreeGrid的已勾选节点,未勾选节点,只勾选部分子节点的父节点分别添加了三个不同的样式,如下:样式一:tree-checkbox2 有子节点被选中样式二:tree-checkbox1 ...

  8. jquery 添加节点的几种方法介绍

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  9. 向html中添加节点

    简单: ①,js中: (function () { var box=document.querySelector("#box"); var con1=document.create ...

随机推荐

  1. 一篇文章告你python能做什么,该不该学?好不好学?适不适合学?

    一.python好学吗?简单吗?容易学吗?没有编程的领取能学吗? 最近有很多小伙伴都在问我这些问题.在这里,我想说,python非常简单易学. 1,简单, Python 非常易于读写,开发者可以把更多 ...

  2. JVM内存管理及垃圾回收机制

    一.JVM内存组成结构 JVM栈由堆.栈.本地方法栈.方法区等部分组成,结构图如下所示:  二.JVM内存回收 Sun的JVMGenerationalCollecting(垃圾回收)原理是这样的:把对 ...

  3. Python --- 二叉树的层序建立与三种遍历

    二叉树(Binary Tree)时数据结构中一个非常重要的结构,其具有....(此处省略好多字)....等的优良特点. 之前在刷LeetCode的时候把有关树的题目全部跳过了,(ORZ:我这种连数据结 ...

  4. react入门(下)

    react生命周期 1. 组件的三个生命周期状态: * Mount:插入真实 DOM * Update:被重新渲染 * Unmount:被移出真实 DOM2. React 为每个状态都提供了两种勾子( ...

  5. 51nod 1175 区间第k大 整体二分

    题意: 一个长度为N的整数序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,第K大的数是多少. 分析: 仅仅就是一道整体二分的入门题而已,没听说过整体二分? 其实就是一个分治的函数 ...

  6. $(document).ready() 与$(window).load()

    虽说很早就开始接触JavaScript,自己也用JavaScript编写过许多代码,如之前的web版码表计时器,就写了近500行代码,函数也写了10个左右.当时也就是想到哪里就写到哪里,行不通就另外找 ...

  7. 配置bean

    [bean配置] 在XML文件中通过bean节点来配置bean <!-- 配置bean class: bean的全类名,通过反射的方式在IOC容器中创建bean,所以要求bean中必须有无参的构 ...

  8. Leetcode 172.阶乘后的零

    阶乘后的零 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! = 120 ...

  9. CentOS 7.1安装GNOME,开启VNC Server

    版权声明:本文为博主原创文章,未经博主允许不得转载. A.准备: 1.安装GNOME Desktop yum groupinstall 'GNOME Desktop' 2.确认GNOME Deskto ...

  10. [K/3Cloud] 分录行复制和新增行的冲突如何处理

    新增行:执行AfterCreateNewEntryRow,这个函数里面对一些数据进行处理(比如字段给上默认值): 复制行:复制行过程中希望这些字段能够得到我修改行信息后的数据,如果不处理,执行到Aft ...