`
JavaCrazyer
  • 浏览: 3008906 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类

Ext之Tree与Tab组合问题

阅读更多

ExtTree与ExtTab结合的时候经常会出现点击左边Tree动态切换右边Tab,并且Tab内容也会改变的问题,下面我说的是例子是这样的

整个侧边栏有两颗树:

第一棵树,点击时切换到它对应的Tab页,这个Tab页内容是ExtGrid,并且点击树节点时Tab内容会动态改变

第二棵树,点击时切换到它对应的Tab页,这个Tab也内容是iframe嵌入的页面,点击子节点也会动态改变Tab内容

侧重讲的是切换 【 tabPanel.setActiveTab(diagrampanel);】和Grid内容的动态改变

代码如下

===================这是第一棵树=====================================

 

var treepanel = new Tree.TreePanel( {

rootVisible : true, // 设为false将隐藏根节点,很多情况下,我们选择隐藏根节点增加美观性

border : true, // 有边框

animate : true, // 动画效果

autoScroll : true, // 自动滚动

containerScroll : true,

loader : treeloader,

useArrows : true,

checkModel : 'cascade', // 对树的级联多选

onlyLeafCheckable : false,

listeners:{

         click:function(node,e){

                 var docpanel = tabPanel.getComponent("docpic");//这里获取TabPanel里面与之对应的Tab

                 tabPanel.setActiveTab(docpanel);

  if(node.text=="文档"){

         return ;

   }

                 searchFn(node.attributes.id)//这里我用来动态改变Grid的内容

                }             

            } 




});

    var rootnode = new Tree.AsyncTreeNode( {

       id : 'cate_root',

text : '文档',

draggable : false,

url:path+'ExtJsp/about.jsp'



});

treepanel.setRootNode(rootnode);

treepanel.on('beforeload', function(node) {

treepanel.loader.dataUrl = path+'tree/displayDocTree.action?id=' + node.id; 

});

//改变Grid内容的方法,其实与带搜索框的Grid产生的效果一样,就是传递最基本的参数

  function searchFn(CId) {   
            // 获取Grid   
            var grid = Ext.getCmp("docGrid");   
            if(grid == null) {   
                Ext.MessageBox.show({   
                    title:      '提示信息',   
                    msg:        '找不到列表控件!',   
                    buttons:    Ext.MessageBox.OK,   
                    icon:       Ext.MessageBox.ERROR   
                });    
                return;   
            }   
            // 获取Grid中的数据存储   
            var store = grid.store;   
            if(store == null) {   
                Ext.MessageBox.show({   
                    title:      '提示信息',   
                    msg:        '找不到数据适配器!',   
                    buttons:    Ext.MessageBox.OK,   
                    icon:       Ext.MessageBox.ERROR   
                });    
                return;   
            }   
            // 把数据加载到数据存储中   
            store.load({   
                // 传一些搜索参数   
                params:{   
                    start:      0,   
                    limit:      20  
                }   
            });   
            // 把参数保存到数据存储中(把上面除了start和limit不复制之外,把全部复制下来就可以了)   
            store.on('beforeload',function() {   
                Ext.apply(   
                this.baseParams,   
                {   
                   CId:CId 
                });   
            });   
        }  
 
=====================这是第二棵树=======================
    
var Tree1 = Ext.tree;
var treeloader1 = new Tree1.TreeLoader( {
dataUrl : path+"tree/displayDiagramTree.action?id='A1'" 
});


var diagramtree = new Tree1.TreePanel( {
rootVisible : true, // 设为false将隐藏根节点,很多情况下,我们选择隐藏根节点增加美观性 
border : true, // 有边框 
animate : true, // 动画效果 
autoScroll : true, // 自动滚动 
containerScroll : true, 
loader : treeloader1, 
useArrows : true, 
checkModel : 'cascade', // 对树的级联多选 
onlyLeafCheckable : false , 
listeners:{ 
    click:function(node,e){
             var myUrl='<iframe  width="100%" height="100%"   frameborder=0 src=${base}/ExtJsp/diagrams/'+node.attributes.id+'.jsp></iframe>';
             var diagrampanel = tabPanel.getComponent("diagrampic");
             tabPanel.setActiveTab(diagrampanel);
             if(node.text=="查看总图"){
             return; 
    }else{ 
                 diagrampanel.body.dom.innerHTML=myUrl;//这里动态改变Tab的html内容
             }
          
           }             
     } 


}); 
  var rootnodee = new Tree1.AsyncTreeNode( {
       id : 'diagram_root', 
text : '查看总图', 
draggable : false, 
url:path+'ExtJsp/about.jsp' 

}); 
  diagramtree.setRootNode(rootnodee);
  diagramtree.on('beforeload', function(node) {
diagramtree.loader.dataUrl = path+'tree/displayDiagramTree.action?id=' + node.id;  
}); 
 

====================下面这个是TabPanel=================
 
  var tabPanel = new Ext.TabPanel({//设置TAB选项
 id:'p4', 
     height:570,//设置高度 
     //width:855, 
     activeTab:0, 
     animScroll:true,//可以滚动的 
     enableTabScroll:true, 
     layoutOnTabChange:true, 
     deferredRender:false, 
     html:'<img src="${base}/images/bg.jpg"/>', 
     items:[{title:'文档管理', 
     id:'docpic', 
       items:[docGrid]}, 
       {title:'流程图',id:'diagrampic',html:'<iframe  width=100% height=100%   frameborder=0 src="${base}/ExtJsp/diagrams/b15228b7-53a8-11df-bcda-86f3311bf26f.jsp"></iframe>'}], 
         listeners:{ 
         tabchange : function(tab,panel){ 
             //alert(panel.title); 
             //tab.remove(panel); 
              
         } 
     } 
   }); 
 
4
1
分享到:
评论

相关推荐

    Extjs的Tree和Tab使用json做tree数据交互

    最后,文件名`extTree1`可能是指一个包含上述示例代码或者JSON数据的文件。在实际开发中,你可能需要将这些代码片段整合到你的项目中,并根据需要调整配置和逻辑。 总结,ExtJS的Tree和Tab组件结合JSON数据,可以...

    Ext4+JSON+Servlet+Tree构建Web应用框架

    在构建Web应用框架时,"Ext4+JSON+Servlet+Struts2+Ext.tree.Panel+Ext.tab.Panel"的组合提供了一种高效且功能丰富的解决方案。这个框架的核心组件包括Ext4 JavaScript库、JSON数据交换格式、Servlet或Struts2作为...

    ExtJsByZheng.rar_ExtJsByZheng_ext_ext 标签_ext tree_grid

    Ext基本使用入门例子:包括布局,窗口,Tab,Tree,grid等,后台使用Servlet。可以直接在MyEclipse6中运行。

    tree with tab

    var westPanel = Ext.create('Ext.tree.Panel', { title : '菜单', region : 'west', margins : '0 5 0 0', width : 200, store : store1, rootVisible : false, listeners : { ...

    EXT 布局 tab布局 普通拖拽 异步加载的树 节点可以编辑的树

    4.mainPage.html为tab布局,右面为tree中间为tab页面。 5.tz-normal-test.html为普通拖拽的练习。 6.tree-asynch-test.html为异步加载的树 7.tree-edit-test.html为节点可以编辑的树 8.tree-tz-test.html为tree...

    Ext例子及布局问题

    4.mainPage.html为tab布局,右面为tree中间为tab页面。 5.tz-normal-test.html为普通拖拽的练习。 6.tree-asynch-test.html为异步加载的树 7.tree-edit-test.html为节点可以编辑的树 8.tree-tz-test.html为tree节点...

    Ext组件描述,各个组件含义

    ### Ext组件概述与详解 #### 一、Ext基础组件 **1.1 Box Component (Ext.BoxComponent)** - **xtype**: `box` - **功能描述**:Box Component 是一个非常基本的 Ext 组件,主要用于定义具有边框和其他布局属性的...

    ext 3.0 中文API

    4. **Tree**:EXT的树形组件用于展示层次结构的数据,支持动态加载、拖放操作和节点的展开/折叠。 5. **Tab Panel**:通过Tab Panel,可以创建带有多个标签页的应用界面,每个标签页可以包含不同的组件或面板。 6....

    Ext 3.0中文手册及帮助文档

    Ext 3.0的数据绑定机制使得UI组件可以直接与数据源关联,当数据源发生变化时,UI会自动更新,反之亦然。这种双向数据绑定提高了开发效率,简化了代码逻辑。 五、API参考 Ext 3.0的API文档详细列出了所有可用的类、...

    EXT3.0中文API文档

    2. **组件系统**:EXT3.0的核心是其组件模型,包括Grid面板、Form表单、Tree视图、Tab面板等多种组件。这些组件具有高度可配置性和可扩展性,可以满足各种复杂的用户界面需求。 3. **数据绑定**:EXT3.0支持数据...

    ExtJs Tree

    - **异步加载**:通过`Ext.tree.TreeLoader`实现数据的异步加载,其中`dataUrl`指定了获取数据的URL路径。 - **根节点配置**:通过`root`属性指定树的根节点,该节点可配置自己的`text`、`iconCls`和`id`等属性。 #...

    Ext Js权威指南(.zip.001

    9.5.1 标签面板的构成及其运行流程:ext.tab.panel、ext.tab.bar与ext.tab.tab / 458 9.5.2 标签面板的配置项、属性、方法和事件 / 462 9.5.3 使用标签页 / 463 9.5.4 可重用的标签页 / 465 9.6 视图与选择模型...

    DRP分销系统界面原型(EXT版)

    DRP分销系统界面原型(EXT版)是一款基于EXT框架设计的用户界面...通过研究这个原型,开发者不仅可以深入理解EXT的组件和API,还能学习如何将这些技术应用于实际的业务场景中,从而提升自己的开发技能和解决问题的能力。

    新版EXT教程

    #### 一、EXT简介与发展历程 EXT是一个强大的JavaScript库,主要用于构建复杂的Web应用程序用户界面。它提供了丰富的组件和工具,帮助开发者快速搭建美观且功能全面的应用界面。从菜鸟到高手的过程,就是学习如何...

    再探Ext中TreePanel控件和TabPanel控件搭配测试

    将TreePanel与TabPanel结合,我们可以创建一个具有多个页面,每个页面都有自己的TreePanel,以展示不同分类的信息。例如,一个TabPanel可以用于项目管理,其中每个Tab代表一个项目,而TreePanel则展示该项目的子任务...

    Extjs做的treepanel+tab切换页

    在"Extjs 做的treepanel+tab切换页"这个项目中,我们主要关注的是如何利用ExtJS 3.2版本来创建一个具备折叠面板(Collapsible Panel)功能的树形视图(TreePanel),以及与之联动的选项卡(TabPanel)。这个设计允许...

    Ext2.1+教程(超强的AJAX界面)

    除此之外,Ext2.1还提供了许多其他组件,如Window(窗口)、Tab Panel(选项卡面板)、Toolbar(工具栏)、Menu(菜单)等,这些组件可以组合使用,构建出丰富的用户界面。例如,你可以创建一个带有多个选项卡的窗口...

    Ext JS 3.2 学习指南

    - **第3章:表单和数据处理**:介绍如何使用Ext JS处理表单数据以及与服务器端交互的方法。 - **第4章:网格面板**:详细讲解Grid Panel的使用方法及其高级功能。 ##### 4.3 第三部分:进阶主题 - **第5章:自定义...

    《Ext 2.0 核心API 详解教程》 pdf

    同时,Store与Grid、Tree等组件紧密集成,实现了数据视图的实时更新。 2. **音效**:虽然EXT 2.0不专注于音频处理,但其提供了一些基本的提示和通知功能,如Tips和 MessageBox,这些在某些场景下可以配合音效增强...

Global site tag (gtag.js) - Google Analytics