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页缺少: