摘要:動態產生的MenuItem如何在MasterPage Postback後顯示為已選取
一般網頁資料庫程式,都會根據使用者權限來隱藏無存取權限的功能
如果使用MasterPage來動態產生MenuItem時,則會發現:
每次在MasterPage的Page_Load時,重新建立的MenuItem並不會執行Click事件!
因此當動態產生的Item被點選導向另一頁時,該Item的狀態並不會停留在已選擇.
固定產生的Item在Click之後會執行item_click事件,所以item.selected=true,如下圖所示:
動態產生的Item在Click之後不會執行item_click事件,所以item.selected=false,如下圖所示:
而每個MenuItem的NavigateUrl若是將MasterPage中的ContentPlaceHolder
導向另一個網頁,通常會先執行目標頁的Page_Load,再回來執行MasterPage的Page_Load
在導向之前,並沒有任何的事件可存下先前所按下的按紐是那一個MenuItem所發出的
因此只好利用被導向的網頁名稱(xxxxx.asp)及MenuItem.NavigateUrl來做判別
在重新建立完MenuItem後加入以下程式碼判別:
1 For Each Item As MenuItem In MainMenu.Items
2 If Item.NavigateUrl = System.IO.Path.GetFileName(Request.Url.ToString) Then
3 Item.Selected = True
4 End If
5 Next
2 If Item.NavigateUrl = System.IO.Path.GetFileName(Request.Url.ToString) Then
3 Item.Selected = True
4 End If
5 Next
如此,被選擇的Item若導向新的一頁,則會自動Item.Selected設成true,畫面上便可看到該按紐顏色呈現已選擇!