`
357029540
  • 浏览: 737281 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Extjs中的树在页面上的简单过滤

阅读更多
Extjs在为我们生成树形结构的同时,也为我们提供了过滤的功能,其主要使用了Ext.tree.TreeFilter类来实现过滤,后台的java代码及css代码请参照《Extjs通过structs2生成树结构》。

    js文件,主要是tree.js:

Ext.onReady(function(){

var textField = new Ext.form.TextField({

    renderTo:'tree1', //加载到界面的位置

     height:20,

     width:100,

     enableKeyEvents: true,

     emptyText:'查找军区',

     listeners:{

        change:function(t,e){filterTree(t,e)}

     }

});

var hidPaks = [];//用于存储隐藏的节点

var filterTree = function(t,e){

var text = t.getValue();//获取textField中的输入值

var filter = new Ext.tree.TreeFilter(tree3, {

                    clearBlank: true,

                    autoClear: true

                    });//给树添加过滤的属性

        //显示隐藏了的节点          

Ext.each(hidPaks,function(n){

    n.ui.show();

});

//没有输入值得时候全部显示节点

if(!text){

filter.clear();

return ;

}

//展开所有节点

tree3.expandAll();

//i表示不区分大小写生成一个正则表达式

var re = new RegExp('^' + Ext.escapeRe(text), 'i');

//只过滤叶子节点,避免枝干被过滤的时候,底下的叶子都无法显示

filter.filterBy(function(n){

return !n.isLeaf() || re.test(n.text);

});

hidPaks = [];

tree3.root.cascade(function(n){

// 如果这个节点不是叶子,而且下面没有子节点,就应该隐藏掉 

if(!n.isLeaf() && judge(n,re,hidPaks)==false && !re.test(n.text)){

n.ui.hide();

hidPaks.push(n);

}else if(n.isLeaf() && judge(n,re,hidPaks)== true){//为叶子节点切没有隐藏时,显示叶子节点

n.ui.show() ;

}

});

}

//过滤不匹配的非叶子节点或者是叶子节点

var judge =function(n,re,hidPaks){   

            var str=false; 

            n.cascade(function(n1){

            n1.attributes.hide = true;//给本节点设置为隐藏

            if(n1.isLeaf()) 

            {

              if(n1.parentNode.attributes.hide == true){//父节点隐藏时判断该节点是否满足条件

              if(re.test(n1.text)){

              str=true;

              return;

              }else{

              hidPaks.push(n1);//在数组中加入叶子节点信息

              }

              }else{

              str=true;

            return;

              }

            } 

            else

            {

              //在父节点不为空切父节点隐藏时

              if(n1.parentNode != null && n1.parentNode != '' && n1.parentNode.attributes.hide == true){

              if(re.test(n1.text)){//判断该节点是否满足条件

              str=true;

              n1.attributes.hide = false;//满足条件时隐藏字段设为false

              return;

              }

              }else if(n1.parentNode != null && n1.parentNode != '' && n1.parentNode.attributes.hide == false){

              str=true;

            n1.attributes.hide = false;//父节点没有隐藏时,本节点也不用隐藏

            return;

              }

              

            } 

            }); 

             

            return str; 

       };

var tree3 = new Ext.tree.TreePanel({

    el:'tree1',

    autoScroll:true,

    animate:true,

    enableDD:true,

    autoHeight:true,

    autoWidth:true,

    containerScroll:true,

    loader:new Ext.tree.TreeLoader({dataUrl:'function_testTree.action'})

});

var root3 = new Ext.tree.AsyncTreeNode({

    text:'中国军区',

    draggable:false,

    id:'testTree'

});

tree3.setRootNode(root3);

tree3.render();



tree3.expandAll();//展开所以节点

});

jsp文件:




<html>

  <head>

     <link rel="stylesheet" type="text/css" href="./ext/resources/css/ext-all.css">

     <script type="text/javascript" src="./ext/adapter/ext/ext-base.js"></script>

     <script type="text/javascript" src="./ext/ext-all.js"></script>

     <script type="text/javascript" src="./js/tree1.js"></script>

     <link rel="stylesheet" type="text/css" href="./css/menu.css">



</head>

 

  <body>

    <div id="container">

    <div id="tree1">

    </div>

</div>

  </body>

</html>


效果图如下所示:
分享到:
评论

相关推荐

    extjs3.3 中文文档

    在解压后的文件中,我们可以看到"Ext 3.2 中文.CHM",这是一部关于ExtJS 3.2的中文帮助文档。虽然标题提到的是3.3版本,但很可能是文档更新到3.2版本时的中文翻译,而3.3的更新可能在英文版中。CHM文件是Windows系统...

    EXT_ASP.rar_asp extjs_extjs_extjs asp_extjs+asp

    它提供了一系列预先封装好的UI组件,如表格、表单、树形视图、图表等,开发者可以通过简单的配置和调用来实现复杂的页面布局和交互。在通讯录程序中,EXTJS可能被用来设计用户友好的界面,如联系人列表、分组管理、...

    Extjs3.1.0

    2. "ext-3.1.0.zip" - 这是ExtJS 3.1.0的核心库文件,解压后将包含所有必要的JavaScript文件、CSS样式表、图像和其他资源,用于在网页中引入和使用ExtJS框架。 关于ExtJS 3.1.0的一些关键知识点包括: 1. **组件...

    轻松搞定Extjs

    - **数据在这里是动词**: 强调了在Extjs中数据不仅是静态的信息,更是应用程序运作的动力源泉。 - **Ext.data.DataProxy类**: 介绍了用于访问不同数据源的代理类。 - **Ext.data.DataReader类**: 详细解释了如何解析...

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

    6. **高级特性**:ExtJS树支持排序、拖放等高级功能。`TreeSorter`用于节点排序,`TreeDragZone`和`TreeDropZone`分别处理拖放操作的抓取和放置。此外,还有`TreeEditor`允许直接编辑节点标签,`TreeFilter`实现节点...

    extjs输入框检索补全

    ExtJS 输入框检索补全是一种常见的前端交互功能,它极大地提高了用户在网页上输入数据时的效率和体验。这种功能通常被应用于搜索框、表单字段等,当用户开始输入时,系统会根据已有的数据集自动建议可能的匹配项,...

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

    《精通JS脚本之ExtJS框架》由浅入深地讲解了ExtJS在Web开发中的相关技术。本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计...

    Extjs中文教程

    - 数据在Extjs中不仅仅是指存储的数据,还涉及到数据的加载、处理和展示。 - 组件与数据紧密相关,许多组件都需要数据源的支持才能正常工作。 - **Ext.data.DataProxy类** - 负责从服务器加载数据,包括异步请求...

    Extjs4.0视频教程和源代码,另附文档翻译

    - **Store的作用**:解释了Store在Extjs中的角色,它是存储和管理数据的地方,可以绑定到各种UI组件上,如GridPanel等。 - **配置和使用Store**:介绍了如何创建和配置Store,以及如何将其绑定到特定的UI组件上。 - ...

    自定义高级查询Extjs

    在这个场景中,"自定义高级查询Extjs"指的是利用Ext JS框架来构建这样的功能。Ext JS是一个流行的JavaScript库,用于创建富客户端应用程序,特别是与数据展示和操作相关的Web应用。 1. **Ext JS简介** - Ext JS...

    ExtJS-3.4.0系列目录

    在ExtJS框架中,3.4.0版本提供了丰富的组件和功能,适合构建复杂的Web应用程序。以下是对标题和描述中提及的几个关键知识点的详细解释: 1. **Ext JS 下载及配置** 在开始使用Ext JS前,你需要从官方网站下载相应...

    extjs2.0(包含17套主题皮肤)

    1. **组件化**:EXTJS基于组件的设计,允许开发者构建复杂的用户界面,这些组件可以是简单的按钮,也可以是复杂的表格和面板。每个组件都有自己的属性、方法和事件,可以独立使用或组合成更复杂的结构。 2. **数据...

    extjs4.0+ssh系统框架

    5. **布局管理**:EXTJS4.0拥有丰富的布局选项,如绝对布局、表格布局、盒式布局等,可以灵活地调整组件在页面上的位置和大小。 SSH框架的知识点: 1. **Struts2**:作为MVC框架,Struts2负责处理用户请求,调度...

    ExtJS 轻松搞定

    详细解释了Store类在ExtJS中的核心地位,它是存储和管理数据的主要容器,支持过滤、排序和分页等功能。 #### 五、下拉列表框 展示了如何使用ComboBox组件创建下拉列表框,包括数据绑定和事件监听。 #### 六、得到...

    ExtjsAPI2文档

    在ExtJS API 2.0中,主要包含以下几个关键知识点: 1. **组件系统**:ExtJS的核心是其强大的组件模型,允许开发者创建各种自定义UI元素,如按钮、面板、窗口、菜单等。这些组件可以组合、嵌套,形成复杂的用户界面...

    ExtJS 教程

    6. **第六章 - Editor Grids(可编辑表格)**: 进一步扩展第五章,讲解如何在Grid中集成编辑功能,使得用户可以直接在表格单元格内进行编辑,提高数据操作的便捷性。 7. **第七章 - ...(未提供)**: 可能包括其他...

    extjs2.0.rar

    在2.0版本中,ExtJS引入了许多关键特性,使得开发者能够创建功能丰富的、交互性强的用户界面。 1. **组件化开发**:ExtJS 2.0的核心是其组件模型,允许开发者通过组合各种UI组件来构建复杂的页面结构。这些组件包括...

    EXTJS实用开发指南

    - **引入 CSS 和 JavaScript 文件:** 在 HTML 页面中引入 EXTJS 提供的 CSS 和 JavaScript 文件。例如: ```html &lt;script type="text/javascript" src="ext-all.js"&gt;&lt;/script&gt; ``` - **编写 JavaScript 代码...

Global site tag (gtag.js) - Google Analytics