根据数据库的记录动态生成菜单并添加相应的单击事件
来源:互联网 发布:淘宝卖家正在修改价格 编辑:程序博客网 时间: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
- 根据数据库的记录动态生成菜单并添加相应的单击事件
- JS生成动态表格并为每个单元格添加单击事件的方法
- 根据数据库记录动态生成C#类及其公共属性并动态执行的解决方案
- 为系统菜单添加新的菜单并响应单击事件
- WPF动态添加按钮并相应事件。
- WPF动态添加按钮并相应事件。
- asp.net运行时,动态添加Button(或其它控件),并处理相应的事件
- javascript生成动态表格,并为每个单元格添加单击事件
- 为动态添加的元素设置相应的事件
- 动态创建菜单,添加菜单,执行自己的菜单事件
- 动态创建菜单,添加菜单,执行自己的菜单事件
- VB.net 动态添加菜单响应单击事件
- Jquery 动态生成li标签以及单击事件的绑定
- vc++ 根据数据库动态添加菜单项
- jquery 动态生成的元素 添加事件
- 根据相应的纪录,生成xml文件
- 根据DataTable 生成 相应的table c#
- 根据中文生成相应的拼音
- 管理员增删改2
- chromium构建系统——gyp
- js追加代码的方法
- [Java 12 IO] PrintStream 打印流 new PrintStream(new FileOutputStream(new File("/home。。
- 将String,json转成Map或bean
- 根据数据库的记录动态生成菜单并添加相应的单击事件
- 从内存中读取数据到ffmpeg中
- 致心灵
- 大话Fragment管理
- 读书笔记一 —— Richard Matthew Stallman
- C# Textbox字符输入的时候自动转换成为大写
- win8-64使用mysql5.6.16免安装版攻略
- asp.net数据库配置文件连接字符串的两种方式
- Swift语言入门教程(翻译版)