Easyui中tree组件实现搜索定位功能及展开节点定位
这几天遇到个input + tree 实现搜索功能的需求,在这里贴出来供大家参考下,如果你有更好的实现效果希望不腻赐教!
首先给大家看看效果 小二 上图 :
需要的部件知识: easyui API
方法:
select target 选择一个节点,'target'参数表示节点的DOM对象。
expand target 展开一个节点,'target'参数表示节点的DOM对象。在节点关闭或没有子节点的时候,节点ID的值(名为'id'的参数)将会发送给服务器请求子节点的数据。

在遇到这个问题的时候,不知道如何下手 ,于是查找相关的资料 找到了 , 不过跟我的又不相同
http://blog.csdn.net/huyongl1989/article/details/9450753
下面我就说说我的思路吧 :
1.在系统启动时,会默认加载若干个树节点数据(因为我的树的数据量比较大,所以不是一次性把数据全部加载完,而是用户点击展开某个节点时,
再去数据库加载相应节点的数据,如果是数据量比较小的话, 可以将所有节点一次性加载完成,在这个的基础上做搜索定位会简单很多)
2.当用户输入某个要定位节点的名称之后,我会去数据库中进行模糊匹配,找出该名称的节点可能为哪些个。如果只匹配到一个则直接定位,
如果匹配了多个,则将这些节点的详细信息展示出来,让用户自己选择去定位具体的哪一个节点。
3.当用户选择定位某个节点后,再去数据库中查找相关的节点信息。
4.在查询出这些数据之后,我会将树的原来的数据源给替换成要定位的数据也是数据data
5.在对树的数据源进行更新处理之后,只需要将指定的节点展开,然后将定位设置为选中状态并让其处于当前窗口的视野范围内就达到了搜索定位的效果。
当用户单击查询按钮时,把输入框的值传入到控制器,让后台处理得到 输入值的父节点(也许父节点任有父节点,所以要把全部的上级都给查出来)
然后根据最高级节点依次展开,这样就实现了我的搜索功能!
下面废话不多说直接 上代码 :
function cityTree1JudicialdoSearch() {
$("#cityTree1").tree('collapseAll');
var root = $("#cityTree1").tree("find", "43");
$("#cityTree1").tree("expand", root.target);
$.ajax({
type: "post",
url: "/JudicialHelp/getAddressIdByName",
data: { AddressName: $("#cityTree1_bt_information").val() },
anysc: true,
success: function (data) {
data = $.parseJSON(data);
for (var i = 0; i < data.length; i++) {
if (data[i].area_lv == "4") {
var rootNode = $("#cityTree1").tree("find", data[i].sf_upbm); //获取当前节点的父节点
var rootNode1 = $("#cityTree1").tree("getParent", rootNode.target); //获取当前节点的父节点的父节点
$("#cityTree1").tree("expand", rootNode1.target);
$("#cityTree1").tree("expand", rootNode.target);
var childeNode = $("#cityTree1").tree("find", data[i].sf_dm); //获取当前节点
$("#cityTree1").tree("select", childeNode.target); //定位当前节点
} else if (data[i].area_lv == "3") {
var rootNode = $("#cityTree1").tree("find", data[i].sf_upbm); //获取当前节点的父节点
$("#cityTree1").tree("expand", rootNode.target);
var childeNode = $("#cityTree1").tree("find", data[i].sf_dm); //获取当前节点
$("#cityTree1").tree("select", childeNode.target); //定位当前节点
}
else if (data[i].area_lv == "2") {
var Node = $("#cityTree1").tree("find", data[i].sf_dm); //获取当前节点
$("#cityTree1").tree("expand", Node.target);
$("#cityTree1").tree("select", Node.target); //定位当前节点
}
}
}
});
}
本篇为原创: 转载请注明出处 www.cnblogs.com/izhiniao 谢谢!
Easyui中tree组件实现搜索定位功能及展开节点定位的更多相关文章
- 【Egret】中tree组件使用案例
Egret中tree组件使用案例,包含(文本过多时,自动换行功能) 下面代码结合http://bbs.egret.com/forum.php?mod=viewthread&tid=19028& ...
- easyui中tree控件添加自定义图标icon
来源于:http://blog.163.com/lintianhuanhai@126/blog/static/165587366201421704420256/ <!DOCTYPE html&g ...
- 做权限树时 使用EasyUI中Tree
符合EasyUI中Tree的Json格式,我们先看一下,格式是如何的 [{ "id":1, "text":"My Documents", & ...
- 使用EasyUI中Tree
easyui里面的加载tree的两种方式 第一种: 使用EasyUI中Tree 符合EasyUI中Tree的Json格式,我们先看一下,格式是如何的 [{ , "text":&qu ...
- easyui中tree型控件不正常显示的处理方法
我在使用easyui中的tree控件时,出现不正常显示的现象,比如li中不能使用自定义的图标.父级展开或关闭时,其子级仍然显现并出现重叠等.找了很多资料,都没解决这个问题,后来逐个对照官方的源码,才找 ...
- easyUI中treegrid组件构造树形表格(简单数据类型)+ssm后台
这几天做的项目要求用树形表格的形式展示一部分数据,于是就想到了使用easyUI的treegrid组件,但几经翻查各种资料,发现数据类型大多采取标准数据类型,即包含children元素的数据类型,小编查 ...
- [置顶] Flex中Tree组件无刷新删除节点
在Tree组件中经常要删除某个节点,而删除之后重新刷新加载该Tree组件会影响整个操作效果和效率,因此,无刷新删除就比较好,既删除了节点也没有刷新tree,而使Tree的状态处于删除之前的状态. 无刷 ...
- [转载]EasyUI中数据表格DataGrid添加排序功能
我们这里演示的是EasyUI数据表格DataGrid从服务器端排序功能,因为觉的本地数据排序没有多大的作用,一般我们DataGrid不会读取全部数据,只会读取当前页的数据,所以本地数据排序也只是对当前 ...
- iview中page组件的跳转功能BUG解决方案
xl_echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!! 在 ...
随机推荐
- Java 比较两日期相差天数
(版本1) publicstaticint getIntervalDays(Date fDate, Date oDate) { if (null == fDate || null == oDate) ...
- centos6.5安装pysider遇见的坑
一.服务器自带pyhon2.7.9 安装pip, # yum -y install python-devel python-setuptool wget http://pypi.python.org/ ...
- C语言实现约瑟夫环讨论
[问题描述] 约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针 ...
- 网上下载的“上下3D”和“左右3D”影片该如何播放?
我们平常买的红蓝3D眼镜智能播放红蓝3D片源.网上找3D电影的时候,虽试图去找红蓝3D格式电影,但总会找到不少“左右格式”或者"上下格式"影片.正常播放后发现有两重画面.这种3D电 ...
- android天气查询(一)websevice之ksoap2软件包的使用
对于用到天气信息,首先我想: 第一:数据不可能是我测得的,必须是网上的信息. 第二:网上的信息分为好多种,具体哪种比较好一点,这里我总结了两种. 第三:数据JSON怎么解析. 第四:如何提出数据与显示 ...
- hdoj 3549 Flow Problem(最大网络流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 思路分析:该问题为裸的最大网络流问题,数据量不大,使用EdmondsKarp算法求解即可:需要注 ...
- poj 1144 Network(割点)
题目链接: http://poj.org/problem?id=1144 思路分析:该问题要求求出无向联通图中的割点数目,使用Tarjan算法即可求出无向联通图中的所有的割点,算法复杂度为O(|V| ...
- Just another Robbery(背包)
1079 - Just another Robbery PDF (English) Statistics Forum Time Limit: 4 second(s) Memory Limit: 3 ...
- 如何在自己的Activity中去控制EditText的焦点
在进入一个Activity时,如果这个Activity中有EditText,则这个EditText会自动获取焦点,然后就会弹出软键盘,这样给用户体验不是很好.所以一般会通过代码控制让EditText不 ...
- JAVA虚拟机内存模型
一.对于Java程序员来说,在虚拟机的自动内存管理机制下,我们不需要为每一个new操作去写匹配的delete/free操作 但是当我们对于内存的管理了解有能够帮助我们理解Java虚拟机的垃圾回收机制. ...