`

[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 TreeFilter ext 写的快速检索

    TreeFilter是EXT Tree的一个扩展功能,它的主要任务是在树结构中进行实时过滤。当用户在搜索框中输入字符时,TreeFilter会自动遍历树的每一层,找到与输入字符匹配的节点,并隐藏不匹配的节点,从而快速呈现匹配结果...

    EXTJS过滤树

    而过滤功能则为用户提供了一种动态筛选树节点的能力,只需输入相关的字符,系统就能实时更新树视图,仅显示与输入匹配的节点。 过滤树的工作原理是:当用户在输入框中输入字符时,EXTJS会监听键盘事件,获取输入的...

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

    通过查阅这个.chm文件,我们可以找到关于如何设置和使用`TreeFilter`的详细指导,以及如何结合其他功能(如`store`、`model`)实现树节点过滤。 2. **ComboTree.js**: 这可能是实现树形下拉组合框(Combobox with ...

    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...

    treepanel实例

    Ext JS提供了许多内置的扩展,如拖放(DragDrop)、搜索(TreeFilter)等,可增强Tree Panel的功能。同时,通过自定义扩展,可以实现更多定制化的需求。 总结,Ext Tree Panel是构建复杂、交互性强的树形界面的...

    精通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...

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

    开发者可以通过监听树节点的各种事件来实现自定义功能。 4. **容器与布局**: 容器(Container)是ExtJS4中用于组织和管理其他组件的组件。容器可以包含多个子组件,并通过布局管理器(Layout Manager)来决定这些...

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

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

    Extjs教程_第八章_Tree(树)(1)

    此外,还有`TreeEditor`允许直接编辑节点标签,`TreeFilter`实现节点过滤。 7. **相关类介绍**:`AsyncTreeNode`、`DefaultSelectionModel`、`MultiSelectionModel`、`RootTreeNodeUI`、`TreeDragZone`、`...

    Layui中树形表格TreeTable使用+文档说明+源码下载

    在IT行业中,前端框架Layui是一个非常受欢迎的轻量级UI库,它提供了丰富的组件,使得开发者可以快速构建美观且功能完善的Web应用。本文将详细介绍Layui中的树形表格组件——TreeTable,以及如何在SpringBoot项目中...

    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