Coolite(八):常用控件TabPanel

Tab Panel 控件使用非常简单,但是功能却非常强大,它同 MenuPanel、 TreePanel一样提供了很多的集合属性,可以定制出丰富的应用。其中用得最多的就是他的Tabs属性,用于 定义子标签选项,可参考下图所示:
                  

      其中content.html的代码如下代码片段,下图为运行效果截图:
< html xmlns =http://www.w3.org/1999/xhtml >
< head >
   
< title ></ title >
   
< style type ="text/css" >
    body{}{font-size:12px;}
    </ style >
</ head >
< body >
TabPanel控件学习
</ body >
</ html >

                  

      TabPanel最灵活的是 动态的创建子标签选项,想了解这个创建过程的实现原理请查阅我之前写的两篇文章(本文前面有文章连接),需要注意的是不能通过同步的事件驱动去创建,一但页面PostBack新创建的所有标签选项将被全部清除。如果一定要通过服务端 后台代码去动态创建,可使用Coolite Toolkit所提供的AjaxEvent机制。
protected void CreataTab_Click( object sender, AjaxEventArgs e)
{
    var tab
= new Tab( " 通过AjaxEvent新增Tab " );
    tab.TabIndex
= short .Parse( " 11 " );
    tab.ID
= " tabID " ;
    tab.AutoLoad.Url
= http://www.cnblogs.com/ ;
    tab.AutoLoad.NoCache
= true ;
    tab.AutoLoad.Mode
= LoadMode.IFrame;
   
this .tabPanel.Tabs.Add(tab);
   
this .tabPanel.ActiveTab = tab;
}

<ext:Button ID="btnCreateTab" runat="server" Text="动态添加子标签选项">
<AjaxEvents>
<Click OnEvent="CreataTab_Click">
<EventMask ShowMask="true" Msg="正在加载"/>
</Click>
</AjaxEvents>
</ext:Button>


      个人觉得通过同步方式创建页面总是会晃动一下,闪着让人很不爽。推荐通过客户端动态添加子标签选项的方式创建,TabPanel提供了相应的客户端API来完成这些操作。
< ext:Button ID ="btnClient" runat ="server" Text ="添加Tab(Client)" >
< Listeners >
< Click Handler ="addTab(#{tabPanel}, 'tabCnblogs', 'http://www.cnblogs.com');" />
</ Listeners >
</ ext:Button >

      通过JavaScript方法addTab()方法动态创建,三个参数分别为:TabPanel控件ID,新创建的Tab的ID,西创建的Tab所呈现的内容路径。 < script type = " text/javascript " >
function addTab(tabPanel, id, url) {
        
var tab = tabPanel.getComponent(id);
        
if ( ! tab) {
            tab
= tabPanel.add({
                id: id,
                title: url,
                closable:
true ,                    
                autoLoad: {
                    showMask:
true ,
                    url: url,
                    mode:
' iframe ' ,
                    maskMsg:
' 正在加载 '
                }                    
            });
        }
        tabPanel.setActiveTab(tab);
    }
< / script>


      客户端创建的方式是纯Ext的操作方式,TabPanel提供了API可直接 获取指定id的子Tab是否存在,使用这一功能就可以完美的处理互斥,以创建出唯一的Tab子标签选项。
                  
      TabPanel使用得多的就是用来处理多标签选项卡,另外多数时候是用作容器,其容器功能和Panel、Window等基本相同。就拿上一篇文章中创建的树做示例吧,现在需要将树 显示在TabPanel的一个子标签选项里,可以直接调用TabPanel的客户端API方法addTab将一个存在的容器类型控件添加到TabPanel,使其成为TabPanel的子Tab。 Code
< ext:ScriptManager ID ="ScriptManager1" runat ="server" >
   
< Listeners >
        
< DocumentReady Handler ="addToTabPanel();" />
   
</ Listeners >
</ ext:ScriptManager >
< script type ="text/javascript" >
    function addToTabPanel() {
        tabPanel.addTab(my TreePanel);
    }
</ script >
< ext:TreePanel ID ="myTreePanel" runat ="server" Title ="音乐播放" Width ="160" >
   
< Root >
        
< ext:TreeNode Text ="歌曲列表" Expandable ="True" Icon ="Cd" >
            
< Nodes >
               
< ext:TreeNode Text ="水木年华" Icon ="Music" >
                    
< Nodes >
                        
< ext:TreeNode Text ="一生有你" Icon ="ControlPlay" />
                        
< ext:TreeNode Text ="完美世界" Icon ="ControlPlay" />
                    
</ Nodes >
               
</ ext:TreeNode >
               
< ext:TreeNode Text ="宇桐非" Icon ="Music" >
                    
< Nodes >
                        
< ext:TreeNode Text ="擦肩而过" Icon ="ControlPlay" />
                        
< ext:TreeNode Text ="不要放弃" Icon ="ControlPlay" />
                    
</ Nodes >
               
</ ext:TreeNode >
               
< ext:TreeNode Text ="寂寞在唱歌" Icon ="Music" >
                    
< Nodes >
                        
< ext:TreeNode Text ="阿桑" Icon ="ControlPlay" />
                    
</ Nodes >
               
</ ext:TreeNode >
               
< ext:TreeNode Text ="徐誉滕" Icon ="Music" >
                    
< Nodes >
                        
< ext:TreeNode Text ="等一分钟" Icon ="ControlPlay" />
                    
</ Nodes >
               
</ ext:TreeNode >
               
< ext:TreeNode Text ="马天宇" Icon ="Music" >
                    
< Nodes >
                        
< ext:TreeNode Text ="依然在一起" Icon ="ControlPlay" HrefTarget =http://www.baidu.com/ />
                    
</ Nodes >
               
</ ext:TreeNode >
            
</ Nodes >
        
</ ext:TreeNode >
   
</ Root >
</ ext:TreePanel >

                    

      本文就简单介绍于此,更多、更高、更高级、更适用的应用需要大家的努力挖掘,欢迎广大朋友排砖指正,相互交流学习。

注:本文内容参考于官方文档和示例整理而成,只当是自己记录的一份学习 笔记,供大家一起交流学习心得。

转载于:https://www.cnblogs.com/hendy/archive/2010/04/14/1711820.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值