Think of Ext2.0 (3)

本文介绍如何在Ext JS中集成Tree与TabPanel控件,实现左侧树型菜单与右侧Tab页内容的联动效果。文章详细展示了如何配置TreePanel及自定义节点样式,以及如何利用ManagedIFrame解决Tab加载外部页面时JavaScript执行问题。
摘要由CSDN通过智能技术生成

5.         Tree

直接使用Ext例子

Tree所需要的json字符串

[{id:300,text:'01',cls:'task-folder',children:[{id:'2',text:'01-01',leaf:true, cls:'task'},{id:'3',text:'01-02',children:[{id:'4',text:'01-02-01',leaf:true},{id:'5',text:'01-02-02',leaf:true}]},{id:'6',text:'01-03',leaf:true}]},{id:'7',text:'02',leaf:true}] 

text”-->显示的文本
"id"-->id值 ,单击事件时可以使用

“leaf”-->Boolean值,如果叶子是真的话,则不能包含子节点Children nodes

"cls"-->选用的样式,通常在这里选定图标

”href“-->指定的url,还有一个”hrefTarget“的属性

children –〉表示子节点信息

 

Record.css中自定了两个定义的csstasktask-folder 

.task .x-tree-node-icon {

    background-image:url(icons/cog.png) ;

}

.task-folder .x-tree-node-icon{

    background-image:url(icons/folder_go.png) !important;

} 

Json字符串中就使用了这个值 

Tree使用如下,相对比较简单

     var  Tree  =  Ext.tree;
    
    
var  tree  =   new  Tree.TreePanel( ... {
        el:
'tree-div',
        autoScroll:
true,
        animate:
true,
        enableDD:
true,
        containerScroll: 
true
        loader: 
new Tree.TreeLoader(...{
            dataUrl:
'record.jsp'
        }
)
    }
);

    
//  set the root node
     var  root  =   new  Tree.AsyncTreeNode( ... {
        text: 
'Ext JS',
        draggable:
false,
        id:
'source'
    }
);
    tree.setRootNode(root);

    
//  render the tree
    tree.render();
    root.expand();

 


6.         Layout

左边为树型控件,右边为TabPanel,显示的页面

当左边树型控件被点击后,右边的所有的Tab进行变化,访问与树型列表id相对应的页面内容

 

l         布局使用

布局一般使用Viewport

var viewport = new Ext.Viewport({

只要注意regionel即可

             region:'north',

             el:'north-div', 

elcontentEl的区别

el是第一层div contentEl一般指向更内部的div

 

l         Tab使用

普通的Tab访问未有无法显示js的问题

            {

                title: 'Ajax Tab 1',

                autoLoad:{url:'grid.html',scripts:true}               

            }

所以就使用了Ext论坛中提供的一个Iframe的扩展 Ext.ux.ManagedIFrame

使用时将miframe.js文件导入即可

var  tabs2  =   new  Ext.TabPanel(  ... {
            
// renderTo: document.body,
            region : 'center',
            el : 
'center-center'// 大的
            //contentEl : 'center-center',  // 小的
            activeTab : 0,
            width : 
600,
            height : 
250,
            plain : 
true,
            defaults : 
...{
                autoScroll : 
true
            }
,
            items : [
        
            
...{
                xtype : 
"panel",
                title : 
"Personal Assistant",                
                body : 
new Ext.ux.ManagedIFrame( ...{
                    autoCreate : 
...{
                        id:
'person'// 设置访问的名称
                        src : 'dynamic.html',                        
                        frameBorder : 
0,
                        cls : 
'x-panel-body',
                        width : 
'100%',
                        height : 
'100%'
                    }

                }
)
            }
,
            
...{
                xtype : 
"panel",
                title : 
"Personal",                
                body : 
new Ext.ux.ManagedIFrame( ...{
                    autoCreate : 
...{
                        id:
'person2'// 设置访问的名称
                        src : 'grid.html',                        
                        frameBorder : 
0,
                        cls : 
'x-panel-body',
                        width : 
'100%',
                        height : 
'100%'
                    }

                }
)
            }

            ]
        }
);

l         树型控件

要给树型控件添加单击事件

tree.on( ' click ' function (node)  ... {
            
// do something
                alert(node.id + ' was activated.');
                Ext.get(
'person').dom.src = 'grid.html?selectedid='+node.id;
            }
);

单击后,通过查找ManagedIFrame形成的Tab页的id,并且将其属性src改变来达到Tab页内容改变的效果

Ext.get('person').dom.src = 'grid.html?selectedid='+node.id;

参考:

Ext2_0 form使用实例 - 天晓得的专栏 - CSDNBlog

Ext 2_0布局实例

[2_0][SOLVED] Best practices for getting - saving form data - Ext JS Forums

[EXT Develop Log]--comboBoxradioFix it! - kkbear - JavaEye技术网站

ext学习-tree组件-在线阅读-新书城

对《Ext2_0 form使用实例》的一点补充 - 天晓得的专栏 - CSDNBlog

Ext 2_0 combobox 做的省份和城市联动选择框 - 天晓得的专栏 - CSDNBlog

关于extstruts的交互 - Allen_CD_China - JavaEye技术网站

Java 类产生json(json-lib) - windfree – BlogJava

学习EXTXX

流氓临远, 没人性土豆’s ext tutorial

And Others, I can’t remember

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值