这几天遇到个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. Python之三层菜单

    三层菜单,根据用户所选数字,进入子菜单.一级一级呈现. menu = { 'Beijing': { "ChaoYang": { "CBD": ['CICC', ...

  2. LintCode-删除元素

    题目描述: 给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度. 元素的顺序可以改变,并且对新的数组不会有影响. 样例 给出一个数组 [0,4,4,0,0,2,4,4],和值 4 返回 ...

  3. 深入剖析哪些服务是Oracle 11g必须开启的

    这篇文章主要介绍了哪些服务是Oracle 11g必须开启的以及这些服务的详细介绍,需要的朋友可以参考下   成功安装Oracle 11g数据库后,你会发现自己电脑运行速度会变慢,配置较低的电脑甚至出现 ...

  4. RFID电子标签的二次注塑封装

    生活当中,RFID电子标签具有明显的优势,随着RFID电子标签成本的降低.读写距离的提高.标签存储容量增大及处理时间缩短的发展趋势,R F I D电子标签的应用将会越来越广泛. RFID电子标签的应用 ...

  5. Android系统设置— android.provider.Settings

    android.provider.Settings Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS); sta ...

  6. CodeIgniter中的session处理

    在CI中你可以这样很简单地装载library:     $this->load->library('newclass');    注意系统中会有两个library目录,一个是system/ ...

  7. C++_template_栈的链式存储及实现

    由于在C++数据结构中的代码不完整,特补全.等日后当工程库调用. 若有疑问,请留言. #include<iostream> using namespace std; template< ...

  8. Objective-c 方法的调用

    在书写了类的声明和实现后,应用程序如何去调用它呢? 在Objective-c中,调用方法的简单格式如下: 1⃣   [实例  方法];    如: [person setAge:32];  其中 pe ...

  9. 用Aspose.Cells控件读取Excel

    Aspose是一个很强大的控件,可以用来操作word,excel,ppt等文件,用这个控件来导入.导出数据非常方便.其中Aspose.Cells就是用来操作Excel的,功能有很多.我所用的是最基本的 ...

  10. SQL 插入语句汇总

    INSERT VALUES 插入一行或多行到目标表中 -- single row INSERT INTO Sales.MyOrders(custid, empid, orderdate, shipco ...