这几天遇到个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组件实现搜索定位功能及展开节点定位的更多相关文章

  1. 【Egret】中tree组件使用案例

    Egret中tree组件使用案例,包含(文本过多时,自动换行功能) 下面代码结合http://bbs.egret.com/forum.php?mod=viewthread&tid=19028& ...

  2. easyui中tree控件添加自定义图标icon

    来源于:http://blog.163.com/lintianhuanhai@126/blog/static/165587366201421704420256/ <!DOCTYPE html&g ...

  3. 做权限树时 使用EasyUI中Tree

    符合EasyUI中Tree的Json格式,我们先看一下,格式是如何的 [{ "id":1, "text":"My Documents", & ...

  4. 使用EasyUI中Tree

    easyui里面的加载tree的两种方式 第一种: 使用EasyUI中Tree 符合EasyUI中Tree的Json格式,我们先看一下,格式是如何的 [{ , "text":&qu ...

  5. easyui中tree型控件不正常显示的处理方法

    我在使用easyui中的tree控件时,出现不正常显示的现象,比如li中不能使用自定义的图标.父级展开或关闭时,其子级仍然显现并出现重叠等.找了很多资料,都没解决这个问题,后来逐个对照官方的源码,才找 ...

  6. easyUI中treegrid组件构造树形表格(简单数据类型)+ssm后台

    这几天做的项目要求用树形表格的形式展示一部分数据,于是就想到了使用easyUI的treegrid组件,但几经翻查各种资料,发现数据类型大多采取标准数据类型,即包含children元素的数据类型,小编查 ...

  7. [置顶] Flex中Tree组件无刷新删除节点

    在Tree组件中经常要删除某个节点,而删除之后重新刷新加载该Tree组件会影响整个操作效果和效率,因此,无刷新删除就比较好,既删除了节点也没有刷新tree,而使Tree的状态处于删除之前的状态. 无刷 ...

  8. [转载]EasyUI中数据表格DataGrid添加排序功能

    我们这里演示的是EasyUI数据表格DataGrid从服务器端排序功能,因为觉的本地数据排序没有多大的作用,一般我们DataGrid不会读取全部数据,只会读取当前页的数据,所以本地数据排序也只是对当前 ...

  9. iview中page组件的跳转功能BUG解决方案

    xl_echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!! 在 ...

随机推荐

  1. cocos2d-x中的CCScrollView滑动体验不佳

    在最近的项目中,使用了Cocos2d-x (2.2.0版本)提供的CCScrollView来拖动一个比较大的画面,但是发现滑动体验非常不佳, 手指离开屏幕后,滑动没有惯性,一个不算太大的画面,要滑动好 ...

  2. codeforces 607B. Zuma 区间dp

    题目链接 给一个长度为n的序列, 每一次可以消去其中的一个回文串, 问最少几次才可以消完. 代码很清楚 #include <iostream> #include <vector> ...

  3. PHP-变量(www.w3school.com.cn/php)

    写在前面: 变量可以形象的解释为信息的容器(存信息的东西).比如说$x=8,相当于把8给放到x里面,以后操作$x的时候就相当于操作8 >5+$x结果为13 ------------------- ...

  4. 一种CentOS图形界面的修复方法

    刚跳槽来这个公司,第一个任务是一块PCIE8120卡的应用开发.尼玛,别人来培训过.演示过的,现在居然没一个人能把别人演示的东西演示给我看!只好自己折腾去了.把服务器搬到自己旁边空位方便折腾,结果发现 ...

  5. IOS 表视图(UITableVIew)的使用方法(7)表视图的编辑功能(拖拉调整排序位置)

    除了每个单元行左边的删除和新增图标,UITableView还支持在单元行的右侧显示一个供用户拖拉调整排序位置的控件. 不过如果要显示此控件,UITableView的数据源需要实现以下的方法. -(vo ...

  6. inlay检验标准

    Inlay 检验标准 检验条件及要求 正常的 40W 日光灯下距离被检物 50cm,眼睛距离被检物 30cm,与被检物呈 45 度角,目视检 使用强光灯箱透视其内部结构 适用范围 Inlay 中料 检 ...

  7. QWidget QMainWindow QDialog 之间的区别

    QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个原子:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己的表现.每一个窗口部件都是矩形,并且它们按Z轴顺序排列的.一个窗口部 ...

  8. Java发送HTTP POST请求(内容为xml格式)

    今天在给平台用户提供http简单接口的时候,顺便写了个调用的Java类供他参考.      服务器地址:http://5.0.217.50:17001/VideoSend 服务器提供的是xml格式的h ...

  9. Objective-c 程序结构

    类是Objective-c的核心,Objective-c程序都是围绕类进行的.Objective-c程序至少包含以下三个部分: 1.类接口:定义了类的数据和方法,但是不包括方法的实现代码. 2.类实现 ...

  10. c++ 输出虚函数表内容

    class Base{ public: virtual void f(){cout<<"Base::f"<<endl;} virtual void g(){ ...