• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
zd_ad
博客园    首页    新随笔    联系   管理    订阅  订阅
C# TreeView菜单,MenuStrip菜单递归动态生成例子

private DataTable ModuleTable; private void FrmMain_Load(object sender, EventArgs e) { try { InitMenu(); } catch { MenuTree.Nodes.Clear(); }} /// /// 初始化菜单 /// protected void InitMenu() { DataSet ds= new DataSet(); ds=bll.GetModuleTypeList(""); RGP.BLL.RGP_Modules bll = new RGP.BLL.RGP_Modules(); ModuleTable = ds.Tables[0]; //取得所有数据得到DataTable //加载TreeView菜单 LoadNode(MenuTree.Nodes, "0"); //加载MenuStrip菜单 ToolStripMenuItem topMenu = new ToolStripMenuItem(); LoadSubMenu(ref topMenu, 0); } /// /// 递归创建TreeView菜单(模块列表) /// /// 子菜单 /// 子菜单上级ID protected void LoadNode(TreeNodeCollection node, string MtID) { DataView dvList = new DataView(ModuleTable); dvList.RowFilter = "ModuleTypeSuperiorID=" + MtID; //过滤父节点 TreeNode nodeTemp; foreach (DataRowView dv in dvList) { nodeTemp = new TreeNode(); nodeTemp.Tag = dv["ModuleTypeID"].ToString() + ",0"; nodeTemp.Text = dv["ModuleTypeName"].ToString(); //节点名称 node.Add(nodeTemp); //加入节点 //nodeTemp.SelectAction = TreeNodeSelectAction.Expand; //nodeTemp.Expanded = false; this.LoadNode(nodeTemp.Nodes, nodeTemp.Tag.ToString().Split(',')[0]); //递归 //增加子模块分类 RGP.BLL.RGP_Modules bll = new RGP.BLL.RGP_Modules(); DataSet Module = bll.GetModuleList("ModuleTypeID=" + dv["ModuleTypeID"].ToString()); int i = 0; foreach (DataRow child_dr in Module.Tables[0].Rows) { if ((UserBox.GetUserTable().IsLimit == true || (child_dr["ModuleDisabled"].ToString().ToLower() == "true" && UserHandle.ValidationModule(int.Parse(child_dr["ModuleID"].ToString()), RGP_Tag.Browse))) && child_dr["IsMenu"].ToString().ToLower() == "true") { TreeNode ChildNode = new TreeNode(child_dr["ModuleName"].ToString()); ChildNode.Tag = child_dr["ModuleID"].ToString() + ",1"; ChildNode.Expand(); nodeTemp.Nodes.Add(ChildNode); i++; } } //删除不必要的模块分类节点。 if (i == 0) { MenuTree.Nodes.Remove(nodeTemp); } } } /// /// 递归创建MenuStrip菜单(模块列表) /// /// 父菜单项 /// 父菜单的ID private void LoadSubMenu(ref ToolStripMenuItem topMenu, int MtID) { DataView dvList = new DataView(ModuleTable); //过滤出当前父菜单下在所有子菜单数据(仅为下一层的) dvList.RowFilter = "ModuleTypeSuperiorID=" + MtID.ToString(); ToolStripMenuItem subMenu; foreach (DataRowView dv in dvList) { //创建子菜单项 subMenu = new ToolStripMenuItem(); subMenu.Text = dv["ModuleTypeName"].ToString(); //判断是否为顶级菜单 if (MtID == 0) { this.SysMainMenu.Items.Add(subMenu); } else { topMenu.DropDownItems.Add(subMenu); } //递归调用 LoadSubMenu(ref subMenu, Convert.ToInt32(dv["ModuleTypeID"])); //增加子模块分类 RGP.BLL.RGP_Modules bll = new RGP.BLL.RGP_Modules(); DataSet Module = bll.GetModuleList("ModuleTypeID=" + dv["ModuleTypeID"].ToString()); int i = 0; foreach (DataRow child_dr in Module.Tables[0].Rows) { if ((UserBox.GetUserTable().IsLimit == true || (child_dr["ModuleDisabled"].ToString().ToLower() == "true" && UserHandle.ValidationModule(int.Parse(child_dr["ModuleID"].ToString()), RGP_Tag.Browse))) && child_dr["IsMenu"].ToString().ToLower() == "true") { ToolStripMenuItem ChildMenu = new ToolStripMenuItem(child_dr["ModuleName"].ToString()); subMenu.DropDownItems.Add(ChildMenu); i++; } } //删除不必要的模块分类节点。 if (i == 0) { this.SysMainMenu.Items.Remove(subMenu); } } }

posted on 2010-12-14 09:08  zd_ad  阅读(527)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3