根据数据库的记录动态生成菜单并添加相应的单击事件

来源:互联网 发布:淘宝卖家正在修改价格 编辑:程序博客网 时间:2024/05/02 03:01
解决办法:通根据数据库依据菜单标识查询出一级菜单及其子菜单,在页面添加一个Menu控件,最后为Menu控件赋值解决办法(红色代码为为菜单添加单击事件的代码):
界面代码:         
<asp:Menu ID="Menu1" runat="server" Orientation="Horizontal"                  DynamicEnableDefaultPopOutImage="False" StaticEnableDefaultPopOutImage="false"                  DenamicEnableDefaultPopOutImage="false" DynamicVerticalOffset ="10" Height="20px"                  <span style="color:#ff0000;">OnMenuItemClick="Menu1_MenuItemClick"</span> Width="100%">           </asp:Menu>
界面逻辑代码:
private void LoadMenu()          {            DataTable table = new LoadMenu().GetRootMenu();            for (int i = 0; i < table.Rows.Count; i++)            {                MenuItem menuRootNode = new MenuItem();
<span style="white-space:pre"><span style="color:#ff0000;">Menu1.MenuItemClick +=Menu1_MenuItemClick;</span></span>                menuRootNode.Text = table.Rows[i]["MenuName"].ToString();                menuRootNode.Value = table.Rows[i]["MenuID"].ToString();                string rootImagePath = table.Rows[i]["MenuIcon"].ToString();                if (!(string.IsNullOrEmpty(rootImagePath)))                {                    menuRootNode.ImageUrl = rootImagePath;                }                DataTable table1 = new LoadMenu().GetChildMenu(Convert.ToInt32(menuRootNode.Value));                for (int j = 0; j < table1.Rows.Count; j++)                {                    MenuItem menuChildNode = new MenuItem();                    menuChildNode.Text = table1.Rows[j]["MenuName"].ToString();                    menuChildNode.Value = table1.Rows[j]["MenuID"].ToString();                    string childImagePath = table1.Rows[j]["MenuIcon"].ToString();                    if (!(string.IsNullOrEmpty(childImagePath)))                    {                        menuChildNode.ImageUrl = childImagePath;                    }                    menuChildNode.Enabled = true;                    menuRootNode.ChildItems.Add(menuChildNode);                }                menuRootNode.Enabled = true;                Menu1.Items.Add(menuRootNode);            }        }
<span style="color:#ff0000;">protected void Menu1_MenuItemClick(Object sender,        System.Web.UI.WebControls.MenuEventArgs e)        {            switch (e.Item.Text.ToLower())            {                case "task":                    Console.WriteLine(e.Item.NavigateUrl);                    return;                case "system":                    Console.WriteLine(e.Item.NavigateUrl);                    return;                case "user":                    Console.WriteLine(e.Item.NavigateUrl);                    return;            }        }</span>
后台逻辑代码:
<span style="color:#333333;">public class LoadMenu {     /// <summary>     /// Get the root menu. Add by lqf 2014/06/04     /// </summary>     /// <returns></returns>     public DataTable GetRootMenu() {         StringBuilder str = new StringBuilder();         str.Append("select * from Menu where ParentMenuID = 0 order by MenuOrder");         DataTable table = DataFactory.SqlDataBase().GetDataTableBySQL(str);         if(table.Rows.Count <= 0){             throw new Exception("Error:Menu item load failure!");         }         return table;     }      /// <summary>     /// Get the child menu. Add by lqf 2014/06/04     /// </summary>     /// <param name="parentMenuId"></param>     /// <returns></returns>     public DataTable GetChildMenu(int parentMenuId) {         StringBuilder str = new StringBuilder();         str.Append("select * from Menu where ParentMenuID = @ParentMenuID");         SqlParam[] param = { new SqlParam("@ParentMenuID", parentMenuId) };         return DataFactory.SqlDataBase().GetDataTableBySQL(str, param);     } }</span>
0 0
原创粉丝点击