动态添加tab(ext)

Default页左边是菜单列表,右边是展示区域,点击左边列表节点,右边区域显示并且生成一个tab。

方法:在左边菜单列表中添加js函数,addTab(id,title,url)。

动态菜单:

<ext:Panel ID="Panel6" runat="server" Collapsible="true" Layout="accordion" Region="West"
                Split="true" Title="菜单列表" Width="175">
            <Content>   
             <ext:AccordionLayout runat="server" ID="Accordion_Menu">   
        
             </ext:AccordionLayout>
            </Content>
            </ext:Panel>  

代码: mp = new MenuPanel();
                mp.ID = string.Concat("MenuPanel_", drs[i]["menuID"].ToString());
                mp.Title = drs[i]["menuName"].ToString();            
                 Accordion_Menu.Items.Add(mp);
          

 MenuItem mi = new MenuItem();
                mi.ID = string.Concat("MenuItem_", drs[i]["menuID"].ToString());
                mi.Text = drs[i]["menuName"].ToString();              
                mi.HrefTarget = "CenterFrame";
               // mi.Icon = (Icon)Enum.Parse(typeof(Icon), "book"); 
                mi.IconUrl ="images/"+drs[i]["iconUrl"].ToString();//自定义图标
               
                mi.Listeners.Click.Handler = string.Format("addTab('MenuItem_{0}', '{1}', '{2}');", mi.ID, mi.Text, drs[i]["url"].ToString());
                mp.Menu.Items.Add(mi);

js代码:

function addTab(id, title, url) {

          

                var tab = TabPanel_Center.getComponent(id);

                if (!tab) {

                    tab = TabPanel_Center.add(new Ext.Panel({

                        id: id,

                        title: title,

                        closable: true,//是否可以关闭

                        autoLoad: {

                            scripts: true,

                            url: url,

                            mode: 'iframe',

                            showMask: true,

                            maskMsg: String.format("正在加载{0}页面?...", title)

                        }

                    }));

 

这样做只能显示二级,并且父节点下必须有子节点,否则会报错,说Default.aspx页缺少:

posted on 2012-10-11 11:59  小景  阅读(487)  评论(0编辑  收藏  举报