`

[Ext扩展]QM.ux.TreeFilter:树节点智能过滤,添加中文模糊匹配功能

    博客分类:
  • Ext
阅读更多
Ext自带一个Ext.tree.TreeFilter类,可以实现树节点的过滤,但是功能太单薄了。我自己实现了一个树的过滤功能,支持以下功能:
  • 过滤时忽略父节点,默认情况下忽略
  • 中文、拼音首字母过滤,你输中文就按照中文进行匹配,输拼音就按照首字母匹配
  • 过滤后自动展开匹配结点的所有父节点
  • 匹配字符串为空时将结点全部显示,可配置全部显示时结点状态为全收缩还是全展开,默认不处理
  • 拼音缓存:确保汉字只转一次拼音,提高效率

1.1 改动:
1.支持中文模糊匹配,输入汉字可以是字符串任意位置

注意事项:
1.循环遍历操作,树节点过多会卡
2.这是前台过滤,请保证过滤前所有结点加载完毕

考虑到新手,附件的例子直接下载到Ext根目录下用浏览器打开即可查看

初始状态:

汉字匹配:

拼音首字母匹配:

  • 大小: 2.4 KB
  • 大小: 2.6 KB
  • 大小: 5.4 KB
  • 大小: 2.1 KB
分享到:
评论
9 楼 -惜帅- 2013-05-08  
-惜帅- 写道
楼主,貌似过滤的时候,有些节点查不出来啊,不知道是哪里出问题了?
比如组织架构中有N个部门是“...部”,输入“部”后,只出来一个,其他的都显示不了,全称也不行,拼音也不行,麻烦解答下



测试后发现,原来是查找的只能是叶子节点,非叶子节点就不行,后来我自己在楼主代码基础上,改了下,增加个属性 includeFolder ,判断是否包含非叶子节点,这个参数由构造的config传入,  并增加了判断
includeFolder:false,//过滤时,是否包含非叶子节点

//private get the matchs and hide other nodes
	filterAll:function(fn,startNode){
		var arr = [];
		startNode = startNode||this.tree.root;				
		startNode.cascade(function(n){
			if(!n.leaf){
				n.expand(false,false);
				if (!this.includeFolder&&this.ignoreFolder) {
					n.ui.hide();
					return;
				}	
			}
			if(fn.call(this,n)){
				arr.push(n);	
			}
			else{
				n.ui.hide();
			}
		},this);
		this.matches = arr;
	},

请指正,谢谢!
8 楼 -惜帅- 2013-05-08  
楼主,貌似过滤的时候,有些节点查不出来啊,不知道是哪里出问题了?
比如组织架构中有N个部门是“...部”,输入“部”后,只出来一个,其他的都显示不了,全称也不行,拼音也不行,麻烦解答下
7 楼 八岭书生 2012-01-11  
楼主写得非常好啊  如果里面的数据是从后台获取的

loader: new Ext.tree.TreeLoader({
       dataUrl:'testTree.do?json=1'
}),

root: new Ext.tree.AsyncTreeNode({
    text: '测试组',
    draggable:false,
    id:'0'
})

那该怎么弄啊

希望楼主百忙中抽空 为我解答下
6 楼 haorb 2011-11-30  
非常的不错,有借鉴价值,谢谢了
5 楼 fh2002 2010-10-27  
good,没问题
再加上
http://blog.csdn.net/zhaoqiliang527/archive/2010/09/13/5880729.aspx
的使用更简单了。
4 楼 mingchong2882 2010-09-02  
不以用,EXT3.2
3 楼 0obeiiedo0 2010-08-18  
很不错的例子!  得研看研看
2 楼 meteorzc 2010-08-18  
非常的不错
1 楼 toyanjie 2010-07-29  
下载不了. 麻烦楼主看下.. 写写. 

相关推荐

    EXT TreeFilter 插件

    EXT TreeFilter 插件 提供ext的tree 快速搜索功能 超简单好用~ 支持拼音首字母和中文模糊查询

    Ext 开发指南 学习资料

    3.10. 树形过滤器TreeFilter 3.11. TreeSorter对树形排序 4. 祝福吧!把表单和输入控件都改成ext的样式。 4.1. 不用ext的form啊,不怕错过有趣的东西吗? 4.2. 慢慢来,先建一个form再说 4.3. 胡乱扫一下输入控件 ...

    精通JS脚本之ExtJS框架.part1.rar

    10.9 树形过滤器TreeFilter 10.10 利用TreeSorter对树进行排序 10.11 树形节点视图——Ext.tree.TreeNodeUI 10.12 表格与树形的结合——Ext.ux.tree.ColumnTree 第11章 其他布局类简介 11.1 标准布局类 11.1.1...

    精通JS脚本之ExtJS框架.part2.rar

    10.9 树形过滤器TreeFilter 10.10 利用TreeSorter对树进行排序 10.11 树形节点视图——Ext.tree.TreeNodeUI 10.12 表格与树形的结合——Ext.ux.tree.ColumnTree 第11章 其他布局类简介 11.1 标准布局类 11.1.1...

    ext TreeFilter ext 写的快速检索

    输入拼音首字母或者汉字都可以对树结点进行过滤 过滤仅对子节点有效 快速检索

    ComboBoxTree(拼音+汉字过滤)源码

    TreeFilter.js:自定义的类,提供树结点的过滤功能(依赖于PinyinFilter.js) JsonTreeLoader.js:自定义的TreeLoader,将符合格式json数据转变为树结点 TreeCombo.js:树形下拉框组件(依赖于TreeFilter.js) ...

    ExtJS4官方指南翻译:DragandDrop拖放/Grid组件/Tree组件/容器与布局

    ExtJS4官方指南翻译:DragandDrop拖放/Grid组件/Tree组件/容器与布局

    树结点过滤 拼或者汉字都可以

    树结点过滤 拼或者汉字都可以 TreeFilter

    EXTJS过滤树

    ext过滤树,可根据输入字符,只显示符合条件的节点。

    TreeFitter-开源

    基于简约的树木拟合的软件,可用于分析历史生物地理学,共同进​​化以及物种树中的问题-基因树拟合。

    ruby-tree_filter:用简洁的查询语言过滤任意数据树

    树过滤器 使用简洁的查询语言过滤任意数据树。 与 Jenkins API 的工作方式类似,如果您碰巧熟悉它。 name,environments # Select specific attributes from a hash environments[id,last_deploy] # Select ...

    tree-filter:集合代数的表达式树

    树过滤器 集合代数的有状态二叉表达式树。 树中的节点是 Node.js EventEmitters,提供对表达式每个部分的精细控制。 代表操作的节点缓存其结果集,并在其子节点更改时重新缓存其结果。 安装 $ npm install tree-...

    django-admin-filtrate:Django Admin的自定义过滤器框架

    关于这个Django应用程序使在Django Admin的更改列表中创建自定义过滤器变得更加容易,并且还提供了TreeFilter和DateRangeFilter 。 Selenium下面。 在Django 1.2.3和@ 15ea9a9 1.3.1上进行了测试。更新到1.4-1.7支持...

    用卷积滤波器matlab代码-Benchmark_EPS:保留边缘的图像平滑基准

    用卷积滤波器matlab代码保留边缘的图像平滑基准。 1引言 该基准测试包括具有地面真实感图像平滑结果的图像数据集,以及可以为各种图像内容生成具有竞争力的边缘保留平滑效果的基线算法。...method_4_treefilter │ 

Global site tag (gtag.js) - Google Analytics