博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ExtJs+SHH实现异步树节点搜索和查找
阅读量:6951 次
发布时间:2019-06-27

本文共 1303 字,大约阅读时间需要 4 分钟。

hot3.png

  摘要:在任何一个Tree树中,提供查找功能无疑会大大方便用户。不用睁大眼睛一级一级去展开,只要输入关键字,回车就能自动定位到节点,岂不快哉?。这样的用户体验是相当完美的。但在动态异步加载的Tree树中,客户端实现这样的功能就有点困难,因为节点是异步动态加载的。默认是没有全部从服务器端取回的,通常的做法是默认加载第一级,其他级的节点都是惰性按需加载的,用户点了才会展开。而对于这个没有完全加载的树,用户希望搜索节点,怎么实现?笨办法是先展开树的所有节点,然后再在树中搜索。这样的话在服务器数据量大的情况下会非常慢。这里的实现方法是在服务器端的Servlet中查找,通过AJAX返回第一个匹配节点的路径Path,然后展开这个路径,选中这个搜索到节点。

效果图:

 

 

要实现此功能需解决三个问题:

1.  通过Ajax将节点id或text传回服务器。

2.  在服务器端查找到节点path,path由节点id号和“/”构成。注意path的格式,如:'/0/4/7'。此处0表示根节点id,7表示被查找的节点id。

3. 将path传回客服端,Extjs将通过的方法展开节点。

 

以下是具体实现:

1. servlet端要实现的功能就是封装path,将path发送到客服端即可,格式如上。代码省略。

2. 客户端代码:

// 查找树节点

 searchNode : function() {
      var searchForm = Ext.getCmp("searchForm").getForm();
      var param = searchForm.getValues();
      if(searchForm.isValid()){
          Ext.Ajax.request({
               url: 'dept!search.action',
               params:{formData:Ext.encode(param)},
               success:function(response){
                   var o = Ext.decode(response.responseText);
                   if(o.success){
                       var tree = Ext.getCmp('sysOrgs');
                       path=o.message;
                       tree.expandPath(path, 'id', this.onExpandPathComplete);
                   }
               },
               failure:function(response){
               },
               scope:this
         });
      }
 },
 onExpandPathComplete:function(bSuccess, oLastNode) {
 
  if(!bSuccess) 
   return;
  //focus 节点,并选中节点!,以下代码不可少 
  oLastNode.ensureVisible();
  oLastNode.select();
  oLastNode.fireEvent('click', oLastNode);
  
 }

关于tree.expandPath方法的使用具体参照API文档。

转载于:https://my.oschina.net/kkrgwbj/blog/358135

你可能感兴趣的文章
网络编程 - 实现文件传送
查看>>
Python 列表字典制作名册管理
查看>>
学习自查:目录(更新中...)
查看>>
JQuery01
查看>>
Java 详解 JVM 工作原理和流程
查看>>
对大学努力的理解
查看>>
name_save matlab
查看>>
Nginx服务器中的Socket切分,需要的朋友可以参考下
查看>>
leetcode 46. 全排列
查看>>
美团点评智能支付核心交易系统的可用性实践
查看>>
关于asp.net中链接数据库的问题
查看>>
kubernetes 1.14安装部署metrics-server插件
查看>>
IEEE754标准浮点格式
查看>>
嵌入式系统内存泄漏检测
查看>>
flAbsPath on /var/lib/dpkg/status failed 解决 Cydia 红字
查看>>
在本地测试一次成功的AJAX请求
查看>>
淘淘商城第二天
查看>>
配置和修改参数
查看>>
DS06--图
查看>>
C#通过XElement写入XML文件
查看>>