Menu控件是一個頁面上使用的菜單。該控件有靜態模式和動態模式兩種顯示模式,靜態模式的菜單項始終是完全展開的,在這種模式下,設置StaticDisplayLevels屬性指定顯示菜單的級別,如果菜單的級別超過了StaticDisplayLevels屬性指定的值,則把超過的級別自動設置為動態模式顯示。動態模式需要響應用戶的鼠標事件才在父節點上顯示子菜單項,MaximumDynamicDisplayLevels屬性指定動態菜單的顯示級別,如果菜單的級別超過了該屬性指定的值,則不顯示超過的級別。www.2cto.com
Menu控件最簡單的用法是在設計視圖中使用Items屬性添加MenuItem對象的集合。MenuItem對象有一個NavigateUrl屬性,如果設置了該屬性,單擊菜單項後將導航到指定的頁面,可以使用Menu控件的Target屬性指定打開頁的位置,MenuItem對象也有一個Target屬性,可以單獨指定打開頁面的位置。如果沒有設置NavigateUrl屬性,則把頁面提交到服務器進行處理。本示例將演示如何使用Menu控件實現導航。
技術要點
使用Menu控件實現導航的技術要點如下。
MenuItem對象表示菜單的一項通過該對象的屬性可以設置菜單的內容和導航方式。
Menu控件的項可以使用設計器和編程兩種方法添加。
StaticDisplayLevels屬性指定靜態菜單的顯示級別。
實現步驟
(1)在VS2010中創建一個ASP.NET網站,命名為“MenuSample”。
(2)添加一個頁面,命名為“Menu.aspx”,並把這個頁設置為起始頁。
(3)從工具箱選擇Menu控件設計頁面,並在窗口的Items屬性中打開編輯菜單項的界面,添加“系統操作”和“幫助”兩個根菜單項,如圖22.3所示。
(4)在首次加載頁面時,用編程的方式,指定Menu控件的一些屬性,並為兩個根菜單項添加子菜單。代碼如下所示。
<%@ Page Language="C#" AutoEventWireup="true" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.Menu1.Orientation = Orientation.Horizontal;//設置菜單水平顯示
this.Menu1.StaticDisplayLevels = 1;//只顯示第一級菜單
this.Menu1.Target = "_blank";//指定在新的窗口打開頁面
MenuItem register = new MenuItem();//定義子菜單
register.Text = "注冊用戶";
register.NavigateUrl = "~/register.aspx";
this.Menu1.Items[0].ChildItems.Add(register);//添加子菜單
MenuItem Login = new MenuItem();
Login.Text = "登錄";
Login.NavigateUrl = "~/Login.aspx";
this.Menu1.Items[0].ChildItems.Add(Login);
MenuItem help = new MenuItem();//定義第二項菜單的子菜單
help.Text = "幫助";
help.NavigateUrl = "~/help.aspx";
this.Menu1.Items[1].ChildItems.Add(help);
MenuItem About = new MenuItem();
About.Text = "關於";
About.NavigateUrl = "~/About.aspx";
this.Menu1.Items[1].ChildItems.Add(About);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Menu使用示例</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Menu ID="Menu1" runat="server">
<Items>
<asp:MenuItem Text="系統操作" Value="系統操作"></asp:MenuItem>
<asp:MenuItem Text="幫助" Value="幫助"></asp:MenuItem>
</Items>
</asp:Menu>
</div>
</form>
</body>
</html>
(5)按Ctrl+F5組合鍵運行程序,運行結果如圖22.4所示
。
源程序解讀
(1)Menu控件的StaticDisplayLevels屬性設置為1,表示只靜態顯示根菜單項,其子菜單動態顯示。
(2)Target屬性指定單擊菜單項打開新頁面的位置,該屬性的級別低於MenuItem類的Target屬性,當兩個對象同時指定Target屬性時,MenuItem類的Target屬性優先。
(3)MenuItem類的NavigateUrl屬性用於指定URL地址。