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

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


TabPanel最灵活的是 动态的创建子标签选项,想了解这个创建过程的实现原理请查阅我之前写的两篇文章(本文前面有文章连接),需要注意的是不能通过同步的事件驱动去创建,一但页面PostBack新创建的所有标签选项将被全部清除。如果一定要通过服务端 后台代码去动态创建,可使用Coolite Toolkit所提供的AjaxEvent机制。
protectedvoidCreataTab_Click(objectsender, AjaxEventArgs e)
{
var tab=newTab("通过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:ButtonID="btnCreateTab"runat="server"Text="动态添加子标签选项">
<AjaxEvents>
<ClickOnEvent="CreataTab_Click">
<EventMaskShowMask="true"Msg="正在加载"/>
</Click>
</AjaxEvents>
</ext:Button>
个人觉得通过同步方式创建页面总是会晃动一下,闪着让人很不爽。推荐通过客户端动态添加子标签选项的方式创建,TabPanel提供了相应的客户端API来完成这些操作。
<ext:ButtonID="btnClient"runat="server"Text="添加Tab(Client)">
<Listeners>
<ClickHandler="addTab(#{tabPanel}, 'tabCnblogs', 'http://www.cnblogs.com');"/>
</Listeners>
</ext:Button>
通过JavaScript方法addTab()方法动态创建,三个参数分别为:TabPanel控件ID,新创建的Tab的ID,西创建的Tab所呈现的内容路径。<script type="text/javascript">
functionaddTab(tabPanel, id, url) {
vartab=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:ScriptManagerID="ScriptManager1"runat="server">
<Listeners>
<DocumentReadyHandler="addToTabPanel();"/>
</Listeners>
</ext:ScriptManager>
<scripttype="text/javascript">
function addToTabPanel() {
tabPanel.addTab(my TreePanel);
}
</script>
<ext:TreePanelID="myTreePanel"runat="server"Title="音乐播放"Width="160">
<Root>
<ext:TreeNodeText="歌曲列表"Expandable="True"Icon="Cd">
<Nodes>
<ext:TreeNodeText="水木年华"Icon="Music">
<Nodes>
<ext:TreeNodeText="一生有你"Icon="ControlPlay"/>
<ext:TreeNodeText="完美世界"Icon="ControlPlay"/>
</Nodes>
</ext:TreeNode>
<ext:TreeNodeText="宇桐非"Icon="Music">
<Nodes>
<ext:TreeNodeText="擦肩而过"Icon="ControlPlay"/>
<ext:TreeNodeText="不要放弃"Icon="ControlPlay"/>
</Nodes>
</ext:TreeNode>
<ext:TreeNodeText="寂寞在唱歌"Icon="Music">
<Nodes>
<ext:TreeNodeText="阿桑"Icon="ControlPlay"/>
</Nodes>
</ext:TreeNode>
<ext:TreeNodeText="徐誉滕"Icon="Music">
<Nodes>
<ext:TreeNodeText="等一分钟"Icon="ControlPlay"/>
</Nodes>
</ext:TreeNode>
<ext:TreeNodeText="马天宇"Icon="Music">
<Nodes>
<ext:TreeNodeText="依然在一起"Icon="ControlPlay"HrefTarget=http://www.baidu.com//>
</Nodes>
</ext:TreeNode>
</Nodes>
</ext:TreeNode>
</Root>
</ext:TreePanel>

本文就简单介绍于此,更多、更高、更高级、更适用的应用需要大家的努力挖掘,欢迎广大朋友排砖指正,相互交流学习。
注:本文内容参考于官方文档和示例整理而成,只当是自己记录的一份学习 笔记,供大家一起交流学习心得。

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

TabPanel最灵活的是 动态的创建子标签选项,想了解这个创建过程的实现原理请查阅我之前写的两篇文章(本文前面有文章连接),需要注意的是不能通过同步的事件驱动去创建,一但页面PostBack新创建的所有标签选项将被全部清除。如果一定要通过服务端 后台代码去动态创建,可使用Coolite Toolkit所提供的AjaxEvent机制。
protectedvoidCreataTab_Click(objectsender, AjaxEventArgs e)
{
var tab=newTab("通过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:ButtonID="btnCreateTab"runat="server"Text="动态添加子标签选项">
<AjaxEvents>
<ClickOnEvent="CreataTab_Click">
<EventMaskShowMask="true"Msg="正在加载"/>
</Click>
</AjaxEvents>
</ext:Button>
个人觉得通过同步方式创建页面总是会晃动一下,闪着让人很不爽。推荐通过客户端动态添加子标签选项的方式创建,TabPanel提供了相应的客户端API来完成这些操作。
<ext:ButtonID="btnClient"runat="server"Text="添加Tab(Client)">
<Listeners>
<ClickHandler="addTab(#{tabPanel}, 'tabCnblogs', 'http://www.cnblogs.com');"/>
</Listeners>
</ext:Button>
通过JavaScript方法addTab()方法动态创建,三个参数分别为:TabPanel控件ID,新创建的Tab的ID,西创建的Tab所呈现的内容路径。<script type="text/javascript">
functionaddTab(tabPanel, id, url) {
vartab=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。
<scripttype="text/javascript">
function addToTabPanel() {
tabPanel.addTab(my TreePanel);
}

本文就简单介绍于此,更多、更高、更高级、更适用的应用需要大家的努力挖掘,欢迎广大朋友排砖指正,相互交流学习。
注:本文内容参考于官方文档和示例整理而成,只当是自己记录的一份学习 笔记,供大家一起交流学习心得。
转载于:https://www.cnblogs.com/hendy/archive/2010/04/14/1711820.html