龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

ExtJS .net版Coolite控件TabPanel使用,如:TabPanel动态添加效果(2)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
TabPanel最灵活的是动态的创建子标签选项,想了解这个创建过程的实现原理请查阅我之前写的两篇文章(本文前面有文章连接),需要注意的是不能通过同步的

      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.xueit.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。


精彩图集

赞助商链接