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

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

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

应用场景:

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

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。

function  _loadwaiting(){ //显示等待信息   
    var  wrap = $( "#dlg_Add_template" );  
    $( "<div class=\"datagrid-mask\"></div>" ).css({display: "block",width:wrap.width(),height:wrap.height()}).appendTo(wrap);  
    $( "<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});  
}  
function  _removeloading(){ //隐藏等待信息   
     var  wrap = $( "#dlg_Add_template" );  
    wrap.find( "div.datagrid-mask-msg" ).remove();  
    wrap.find( "div.datagrid-mask" ).remove();  
}
  • 以上代码从参考文章摘取,但经过改写。原文是对easyUI的所谓扩展,仍然只支持数据加载才显示。

然后调用:

function  _copyTo() {  
    _loadwaiting(); //显示等待信息   
  
     //将选中节点复制到目标树   
    (代码略)  
  
    _removeloading(); //隐藏等待信息   
}
  • 结果意料之中,开始复制节点时,等待信息根本没来得及显示,直到复制完成才一闪而过,根本没有达到应有的效果!

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

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

function  copy(){  
    _loadwaiting(); //显示等待信息   
  
    setTimeout(_copyTo,500); //500毫秒后开始复制工作   
}  
}  
function  _copyTo() {  
     //将选中节点复制到目标树   
    (代码略)  
  
    _removeloading(); //隐藏等待信息   
}
时间: 2024-08-11 07:39:26

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

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

环境:RHEL 6.5 + Oracle 11.2.0.4 单节点RAC 需求:单节点RAC添加新节点 1.添加节点前的准备工作 2.正式添加节点 3.其他配置工作 1.添加节点前的准备工作 参考Oracle官方文档: Oracle? Clusterware Administration and Deployment Guide 11g Release 2 (11.2) -> Adding and Deleting Cluster Nodes 1.1 确保硬件连接正常 1.1 Make phys

EasyUI的treegrid实现自动顺序选择行节点

这两天用EasyUI的treegrid写了一个根据滚动条滚动时相应的依次选中treegrid中的行的demo,之前用了一个递归实现不了,所以用了两个递归实现的,效果如图: 这里的使用的easyui 1.4版本,这个treegrid的方法很少,所以实现起来很费劲,需要自己写函数.好了,上代码: 1 <%@ include file='/main/head.jsp' %> 2 3 <div data-options="region:'center',title:'项目时刻进度展示'

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

jQuery EasyUI,TreeGrid(树形表格)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 TreeGrid(树形表格)组件的使用方法,这个组件依赖于 DataGrid(数据表格)组件. 一.加载方式 建立一个 JSON 文件 [ { "id": 1, "name": "系统管理", "date": "2015-05-10", &quo

SSH+Easyui之TreeGrid树形展现数据

本文介绍Struts2.Spring.Hibernate与easyui的TreeGrid结合,以树的形式展现数据库中数据.在开发中会碰到很多需要以树的形式展现数据,如导航条.权限管理模块中的资源管理,通常在数据库中都是以树的形式存在.例子程序以资源管理为例,使用treegrid展现资源管理子模块的数据.最终效果如下图: 使用easyui使用树形展现很简单,只需将<table>标签的class设为easyui-treegrid即可 <body class="easyui-layo

JQuery 添加节点

Mark一段自己写的添加节点的代码 function reply2(){ $( "<div class=sec1-div5>"+"<div class='sec1-div5-img1'><img src='image/my.jpg' width='25px' height='25px'/></div>" + "<div><p class='sec1-p'><span>我:&

Oracle 11gR2 RAC 添加节点

1. 概述 生产,测试数据库添加节点. 2. 安装前准备 1.首先,物理链路的准备.这过程包括对db3进行存储映射.心跳互联等物理环境的准备: 2.根据db1.db2的操作系统配置,安装.配置db3的操作系统:注意此处需要配置的操作系统内容较多.大致包括确认RAC需要的系统安装包.系统核心参数配置.ASMLIB的配置./etc/hosts配置等等.详细可参考官方的安装指导手册. 3.根据db1.db2的操作系统组.用户的信息,在db3上创建相应的组.用户:创建对于的目录信息:注意:创建的组.用户

JS添加节点方法与JQuery添加节点方法的比较及总结

原生JS添加节点方法与JQuery添加节点方法的比较及总结 一.首先构建一个简单布局,来供下边讲解使用 1.HTML部分代码: <div id="div1">div1</div> <div id="div2">div2 <span id="span1">span1</span> <span id="span2">span2</span> <

jquery动态添加节点

<1> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title&

rac 10g 添加节点详解

目标: 当前我环境中是有两个节点RAC1 和RAC2 节点,现在增加一个RAC3节点.   概要:为现有的Oracle10g RAC 添加节点大致包括以下步骤: 1. 配置新的服务器节点上的硬件及操作系统环境 2. 向 Cluster 集群中加入该节点 3. 在新节点上安装 Oracle Database software 4. 为新的节点配置监听器 LISTENER 5. 通过 DBCA 为新的节点添加实例   注意:在新的服务器节点上配置操作系统环境 1. 这包括配置该节点今后使用的 pub