`
resp
  • 浏览: 156466 次
  • 性别: Icon_minigender_1
  • 来自: 湖南长沙
社区版块
存档分类
最新评论

Extjs TreeFilter 根据关键字过滤树

阅读更多


 

var tbar = new Ext.Toolbar({
				buttonAlign : 'center',
				items : [{xtype : 'textfield',emptyText : '根据企业名称检索企业...',id:'filter_input',width : 200}]
			});

this.userTreepanel = new Ext.tree.TreePanel({
             renderTo : 'tree_menu_'+this.pageId,
             region:'north',
             title:'用能单位树',
             split:true,
             width: 210,
             tbar : tbar,
             height : (this.getBodyHeight(0)-10),
             collapsible: false,
             margins:'5 0 5 0',
             loader: this.treeLoader,
             rootVisible:true,
             lines: false,
             singleClickExpand : true,
             autoScroll:true,
             root: new Ext.tree.AsyncTreeNode({text:"企业树",id:'-1',expanded:true}),
            listeners: {            
		           'click' : function(node,e) {
		           		Main.getPageControler().treeNodeClicked(node);
		           	 	Main.getPageControler().commit(node);
		           }
       		}      
         });
         
         var tree = this.userTreepanel;
         var filter = new Ext.tree.TreeFilter(tree, {
				clearBlank : true,
				autoClear : true
			});
		
		 // 保存上次隐藏的空节点
		 var hiddenPkgs = [];
         var field = Ext.get('filter_input');
         field.on('keyup', function(e) {
         	var text = field.dom.value;

				// 先要显示上次隐藏掉的节点
				Ext.each(hiddenPkgs, function(n) {
							n.ui.show();
						});

				// 如果输入的数据不存在,就执行clear()
				if (!text) {
					filter.clear();
					return;
				}
				tree.expandAll();

				// 根据输入制作一个正则表达式,'i'代表不区分大小写
				var re = new RegExp(Ext.escapeRe(text), 'i');
				filter.filterBy(function(n) {
							// 只过滤叶子节点,这样省去枝干被过滤的时候,底下的叶子都无法显示
							return !n.isLeaf() || re.test(n.text);
						});

				// 如果这个节点不是叶子,而且下面没有子节点,就应该隐藏掉
				hiddenPkgs = [];
				tree.root.cascade(function(n) {
							if (!n.isLeaf() && n.ui.ctNode.offsetHeight < 3) {
								n.ui.hide();
								hiddenPkgs.push(n);
							}
						});
         });
 

 

  • 大小: 35.7 KB
分享到:
评论
3 楼 henchong 2013-01-07  
resp 写道
henchong 写道
extjs tree一次性加载数据量太多。。搜索该怎么解决呀,直接页面就未响应了

你好,这个你可以在后台实现过滤,把得到的结构在树上展示就可以了。以上示例只适合客户端过滤。



嗯,已经解决了,直接在后台过滤拼接成tree结构的。。谢谢
2 楼 resp 2012-10-31  
henchong 写道
extjs tree一次性加载数据量太多。。搜索该怎么解决呀,直接页面就未响应了

你好,这个你可以在后台实现过滤,把得到的结构在树上展示就可以了。以上示例只适合客户端过滤。
1 楼 henchong 2012-10-26  
extjs tree一次性加载数据量太多。。搜索该怎么解决呀,直接页面就未响应了

相关推荐

    根据输入的关键字过滤ext树节点

    本篇文章将深入探讨如何根据输入的关键字过滤Ext树节点,类似于MyEclipse中的preferences搜索框功能。 首先,理解“树节点过滤”(Tree Node Filtering)的概念。在ExtJS的树视图中,过滤功能允许用户通过输入...

    ExtJS grid过滤操作

    本篇将深入探讨ExtJS Grid的过滤操作,以及如何动态地对本地store进行筛选。 1. **Grid过滤基础** - **Filter Model**:ExtJS Grid中的过滤功能基于Filter Model。每个列都可以有自己的过滤器,用户可以根据需要...

    EXTJS过滤树

    EXTJS过滤树是一种在EXTJS框架中实现的高级特性,主要用于增强树形组件的功能,让用户能够更高效地浏览和操作大量的层次数据。在EXTJS中,树形组件(TreePanel)通常用于展示具有层级关系的数据,例如组织结构、文件...

    ExtJs Filter 表格过滤

    在ExtJs中,"Filter"功能是用来处理数据网格(Grid)中的数据过滤,它允许用户根据特定条件快速筛选和查找所需信息。表格过滤是提高用户体验和数据管理效率的重要工具,尤其在处理大量数据时。 在"ExtJs Filter ...

    ExtJS Filter 实现表格过滤

    ExtJS Grid还支持组合过滤,即同时应用多个过滤器,可以通过`filters`配置项定义一组过滤规则,Grid将根据这些规则同时筛选数据。 **6. 状态保存与恢复** 为了提高用户体验,可以实现过滤状态的保存与恢复,例如在...

    extjs 树 搜索

    总的来说,EXTJS的树形搜索功能是通过结合TreePanel、TreeStore和过滤机制实现的,它提供了灵活的搜索选项,能够满足不同场景下的数据查找需求。通过深入理解和运用这些知识点,我们可以构建出功能强大、用户体验...

    extjs增删改查分页树

    extjs增删改查分页树

    Extjs自定义组件-下拉树

    ### Extjs自定义组件——下拉树:深入解析与实现 在现代Web开发中,Extjs作为一款功能强大且灵活的框架,深受开发者喜爱。它提供了丰富的UI组件库,能够帮助开发者快速构建复杂的用户界面。其中,自定义组件是Extjs...

    EXT TreeFilter 插件

    EXT TreeFilter插件是EXT库中的一个强大工具,主要用于增强EXT的Tree组件的功能,特别是针对树形结构数据的快速搜索和过滤。EXT Tree是EXT框架中用于展示层次结构数据的组件,它通常用于构建具有多级目录结构的应用...

    extjs 可编辑的表格树 Ext.tree.ColumnTree Ext.tree.ColumnTreeEditor

    extjs 可编辑的表格树,每个单元格自定义编辑组件,可以自适应列宽,只有源码与例子,运行实例要修改路径,不然图片不能显示,注意etree.jsp的js引入路径 支持Ext2.x以上版本 如运行不了EmailTo : codeme9@gmail....

    Extjs图片上传 带过滤和缩略图

    ExtJS提供了丰富的组件和布局选项,你可以根据需求调整界面设计。 8. **异步上传**: 考虑使用Ajax进行异步上传,这样用户可以在等待上传完成的同时继续使用应用的其他功能。你可以利用ExtJS的`Ajax`类或`form....

    extjs异步树,多选树,json数据机构,集成spring,struts例子

    extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json...

    Extjs4.2 Grid filter Demo 表格过滤实验

    这是利用sencha cmd 生成的GridFilterDemo工程中的app和build文件夹,其余文件过大并且与主题无关,因此未包含。具体方法,请参看我的博客: 《Extjs4.2 Grid Filter Feature 表格过滤特性》

    extjs4 实现下拉树并支持复选

    在EXTJS4中,实现一个下拉树(Combobox Tree)并支持多选和复选功能,主要是通过自定义组件(Ext....在实际开发中,可以将此组件引入到你的EXTJS应用中,然后根据项目的实际数据模型和业务逻辑进行相应的定制和扩展。

    EXTJS动态树支持checkbox 全选

    标题中的“EXTJS动态树支持checkbox全选”指的是EXTJS中树组件的一个特性,即在树形结构中添加复选框(checkbox)功能,并支持全选和全取消选中操作。这样的功能对于需要用户进行多项选择的场景非常有用,比如文件...

    Extjs下拉多选树

    7. **事件处理**:ExtJS提供丰富的事件系统,例如`checkchange`事件可以在节点的复选状态改变时触发,使得开发者可以根据用户的选择进行相应的业务逻辑处理。 8. **API配置**:使用ExtJS API可以进一步定制组件的...

    extjs实现动态树

    ExtJS 是一个强大的JavaScript 框架,专用于构建富客户端Web应用程序。它提供了一整套组件库,包括用于创建复杂布局、数据绑定、...在实际开发中,应根据项目需求和性能考虑,合理配置和优化动态树的相关属性和行为。

    ExtJs4.2下拉树(修改版)

    ExtJs4.2没有直接提供下拉树这个组件,但是有例子可以用,文件位置:ext-4.2.1.883\examples\ux\TreePicker.js 但是它有点小毛病吧:默认显示了根节点;达到最小高度时再展开节点,高度不能自动调整。 所以我做了一...

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

    总之,"树结点过滤 拼或者汉字都可以 TreeFilter"涉及到的是在JavaScript环境中,特别是使用ExtJS等库时,如何利用`TreeFilter`功能来实现在树形结构中对节点的拼音或汉字过滤,提高用户在操作树形数据时的效率和...

    Extjs2分页树 带查询功能

    同时,如果实现了查询功能,服务器还需要能够根据查询条件过滤数据。 综上所述,"Extjs2分页树 带查询功能"是一个复杂的实现,需要对ExtJS的组件、存储、数据模型以及异步加载机制有深入理解。通过这个实现,开发者...

Global site tag (gtag.js) - Google Analytics