zoukankan      html  css  js  c++  java
  • Ext.Net学习笔记之动态加载TabPanel

    在Asp.net中,我们常常用母版页来布局,避免重复的代码。在内容页中只显示相关的信息。

    可是,在Ext.Net的布局中,是否也可以这样呢?

    答案是肯定的,不然也不会写这篇文章了。

    我的决解办法是,在TabPanel中动态添加一个Tab,这个Tab就是内容页。

    首先简单的搭个页面:

    West是一个简单的导航栏,单击上面的一个选项,就会在Center中增加一个Tab。如下代码:

     1       <ext:Viewport runat="server" Layout="BorderLayout">
     2             <Items>
     3                 <ext:Panel runat="server" Region="North" Title="North" Height="100"></ext:Panel>
     4                 <ext:Panel runat="server" Region="West" Title="West" Width="200" Collapsible="true">
     5                     <Items>
     6                         <ext:MenuPanel runat="server">
     7                             <Menu runat="server">
     8                                 <Items>
     9                                     <ext:MenuItem runat="server" Text="动态加载Tab">
    10                                         <Listeners>
    11                                             <Click Handler="AddPageTab(#{ContentTab},'id','Test.aspx',this,'动态加载的Tab');"></Click>
    12                                         </Listeners>
    13                                     </ext:MenuItem>
    14                                 </Items>
    15                             </Menu>
    16                         </ext:MenuPanel>
    17                     </Items>
    18                 </ext:Panel>
    19                 <ext:TabPanel runat="server" Region="Center" Title="Center" ID="ContentTab">
    20                     <Items>
    21                         <ext:Panel runat="server" Title="首页"></ext:Panel>
    22                     </Items>
    23                 </ext:TabPanel>
    24             </Items>
    25       </ext:Viewport>

     可以看到,在菜单中有个Listeners的Click事件。它就是动态加载的关键,调用的事Script中的AddPageTab函数,其中包含5个参数,分别是

    #{ContentTab}:即TabPanel的ID属性;

    'id':表示动态加载的ID属性,唯一性;

    'Test.aspx':表示要加载的url;

    this:不用说啦,当前的这个MenuItem;

    '动态加载的Tab':表示标题;

    参考下面的js可能会更清楚点:

     1 var AddPageTab = function (tabPanelID, addTabID, pageUrl, menuItem, tabName) {
     2             var tab = tabPanelID.getComponent(addTabID);
     3 
     4             if (!tab) {
     5                 tab = tabPanelID.add({
     6                     id: addTabID,
     7                     title: tabName,
     8                     closable: true,
     9                     menuItem: menuItem,
    10                     loader: {
    11                         url: pageUrl,
    12                         renderer: "frame",
    13                     }
    14                 });
    15             }
    16 
    17             tabPanelID.setActiveTab(tab);
    18         }

    需要的参数可以自行更改。

    结果如下图所示:

    解决办法,我想到的就这一个。如果你有不同的方法,可以告诉我。相互学习。

  • 相关阅读:
    Docker系统知识整理(从安装到熟练操作)
    Dockerfile 文件介绍
    Cmake命令之add_subdirectory介绍
    Cmake实战指南
    cmake的四个命令:add_compile_options、add_definitions、target_compile_definitions、build_command
    cmake:选择编译器及设置编译器选项
    Task异常
    单元测试误区
    网络的核心概念
    java~使用枚举来实现接口的多态
  • 原文地址:https://www.cnblogs.com/tnnlink/p/3525932.html
Copyright © 2011-2022 走看看