Extjs Tree增加搜索功能

// 1.第一步:增加一个搜索框到TreePanel tbar

 tbar:[‘ ‘,
          new Ext.form.TextField({  
              width:350,  
              emptyText:‘请输入关键字检索‘,  
              enableKeyEvents: true,  
              listeners:{  
                  keyup:function(node, event) {  
                      findByKeyWordFiler(node, event);  
                  },  
                  scope: this  
              }  
          })  
],

// 2.第二步:增加搜索方法

//--------------Tree filter implement---------------BEG
var treeFilter = new Ext.tree.TreeFilter(tree, {  
    clearBlank : true,  
    autoClear : true  
});  

var timeOutId  = null;  
var hiddenPkgs = [];  

var findByKeyWordFiler = function(node, event) {  
    clearTimeout(timeOutId);// 清除timeOutId  
    tree.expandAll();// 展开树节点  
    // 为了避免重复的访问后台,给服务器造成的压力,采用timeOutId进行控制,如果采用treeFilter也可以造成重复的keyup  
    timeOutId = setTimeout(function() {  
        // 获取输入框的值  
        var text = node.getValue();  
        // 根据输入制作一个正则表达式,‘i‘代表不区分大小写  
        var re = new RegExp(Ext.escapeRe(text), ‘i‘);  
        // 先要显示上次隐藏掉的节点  
        Ext.each(hiddenPkgs, function(n) {  
            n.ui.show();  
        });  
        hiddenPkgs = [];  
        if (text != "") {  
            treeFilter.filterBy(function(n) {  
                // 只过滤叶子节点,这样省去枝干被过滤的时候,底下的叶子都无法显示  
                return !n.isLeaf() || re.test(n.text);  
            });  
            // 如果这个节点不是叶子,而且下面没有子节点,就应该隐藏掉  
            tree.root.cascade(function(n) {  
                if(n.id!=‘0‘){  
                    if(!n.isLeaf() &&judge(n,re)==false&& !re.test(n.text)){  
                        hiddenPkgs.push(n);  
                        n.ui.hide();  
                    }  
                }  
            });  
        } else {  
            treeFilter.clear();  
            return;  
        }  
    }, 500);  
}  

// 过滤不匹配的非叶子节点或者是叶子节点  
var judge =function(n,re){  
    var str=false;  
    n.cascade(function(n1){  
        if(n1.isLeaf()){  
            if(re.test(n1.text)){ str=true;return; }  
        } else {  
            if(re.test(n1.text)){ str=true;return; }  
        }  
    });  
    return str;  
};

});

//--------------Tree filter implement---------------END
时间: 2024-10-28 23:48:58

Extjs Tree增加搜索功能的相关文章

【转】为Android应用添加搜索功能

为Android应用添加搜索功能 为Android应用增加搜索功能:增加搜索建议

ExtJs4.2应用:使用ExtJs扩展组件searchfield实现数据搜索功能

ExtJs4.2应用:使用ExtJs扩展组件searchfield 实现数据搜索功能 1.引入searchfield组件 在Ext目录下放入ux目录将searchfield组件放入ux目录下的form文件下,如图所示: 2.在对应Js文件中引入searchfield组件 dockedItems: [{ dock: 'top', /**在顶部显示*/ xtype: 'toolbar', /**以工具栏形式展示*/ items: { width: "25%", fieldLabel: 'L

ILSpy搜索功能加强版

1.修改搜索功能,增加如下的额外搜索选项 A.按文本搜索(默认选项) B.按通配符搜索 C.按正则表达式搜索 2.搜索增加如下特性: A.可以按照名字空间检索特定名字空间下的所有类. B.修正了官方版本无法搜索泛型类型的功能. 警告: A.此版本为非官方版本. B.本软件为第三方修改软件,此软件的著作权及版权归原作者所有. C.原软件的任何版权声明及相关权益声明同样适用于本软件. 下载地址: https://onedrive.live.com/?cid=e0560144122a3b9d&id=E

iOS9系列专题二——全新的搜索功能api

更加智能的搜索方案--iOS9搜索功能新api 一.引言 iOS9中为我们提供了许多新的api,搜索功能的加强无疑是其中比较显眼的一个.首先,我们先设想一下:如果在你的app中定义一种标识符,在siri和搜索中,可以用过这个标识符搜索到你的app,是不是很棒?不,这还差得远,你可以定义任意的数据,使其在搜索和siri中可以快速检索到,这样的搜索功能是不是非常酷?不,还有更cool的,你甚至可以在你的网站中添加一些标志,使apple的爬虫可以检索到,那样,即使用户没有安装你的app,也可以在搜索中

Lucene 搜索功能

搜索过程 图解: 主要 API: IndexSearcher:    //所有搜索都通过 IndexSearcher 进行,他们将调用该类中重载的 search() 方法 Query:            //封装某种查询类型的具体子类,Query 实例将会被传递给 IndexSearcher 的 search() 方法 QueryParser:      //将用户输入的查询表达式处理成各种具体的 Query 对象 TopDocs:          //保存由 IndexSearcher.

仿百度首页并实现搜索功能

学了html和css之后没有做过什么大的项目,没有什么项目经验,所以决定从小的项目做起,然后做大的项目,循序渐进,增加自己的项目经历和增强自己的动手能力. 百度首页没有特别多的东西,所以仿起来比较容易,但是要做到完全一模一样还是要花费一些功夫的. 一 做一些准备工作: 1 编辑器:webstorm,浏览器:Chrome; 2 利用Chrome的Image downloader插件抓取百度首页的图片,作为素材. 3编程实现 二 项目的文件结构 百度首页 .├── css│   └── index.

创建一个提供搜索功能来搜索类(可执行文件)

/* * 这段代码的主要功能是后创建文件的索引. * 创建一个提供搜索功能来搜索类. * */ package ch2.lucenedemo.process; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Date; import java.util.Iterator; import java.u

android5.0系统设置搜索功能简析

一.目的: 简单介绍系统设置搜索功能实现,初步熟悉搜索数据库构建规则以及匹配逻辑. 二.相关问题解答 1.系统设置可对那些设置项进行构建搜索数据库? 答:系统设置对数据项的构建规则在com.android.settings.search.SearchIndexableResources类中进行定义,例如如下,将wifi设置,wifi高级设置设置项假如搜索数据匹配库. sResMap.put(WifiSettings.class.getName(), new SearchIndexableReso

修改百度地图SearchInRectangle.js,去掉搜索功能,实现拖动搜索框时获得右下角坐标经纬度

var BMapLib = window.BMapLib = BMapLib || {};//var rbPoint=0;(function() { /** * BMAP_ZOOM_IN 拉框后执行放大操作 * @type {int} */ var BMAP_ZOOM_IN = 0; /** * @exports SearchInRectangle as BMapLib.SearchInRectangle */ var SearchInRectangle = /** * SearchInRect