C# TreeView菜单,MenuStrip菜单递归动态生成例子
来源:互联网 发布:塞尔维亚三大球 知乎 编辑:程序博客网 时间:2024/05/07 22:37
private DataTable ModuleTable;
private void FrmMain_Load(object sender, EventArgs e)
{
try
{
InitMenu();
}
catch
{
MenuTree.Nodes.Clear();
}
}
/// <summary>
/// 初始化菜单
/// </summary>
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);
}
/// <summary>
/// 递归创建TreeView菜单(模块列表)
/// </summary>
/// <param name="node">子菜单</param>
/// <param name="MtID">子菜单上级ID</param>
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);
}
}
}
/// <summary>
/// 递归创建MenuStrip菜单(模块列表)
/// </summary>
/// <param name="topMenu">父菜单项</param>
/// <param name="ItemID">父菜单的ID</param>
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);
}
}
}
private void FrmMain_Load(object sender, EventArgs e)
{
try
{
InitMenu();
}
catch
{
MenuTree.Nodes.Clear();
}
}
/// <summary>
/// 初始化菜单
/// </summary>
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);
}
/// <summary>
/// 递归创建TreeView菜单(模块列表)
/// </summary>
/// <param name="node">子菜单</param>
/// <param name="MtID">子菜单上级ID</param>
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);
}
}
}
/// <summary>
/// 递归创建MenuStrip菜单(模块列表)
/// </summary>
/// <param name="topMenu">父菜单项</param>
/// <param name="ItemID">父菜单的ID</param>
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);
}
}
}
0 0
- C# TreeView菜单,MenuStrip菜单递归动态生成例子
- C# 使用数据库和MenuStrip动态生成菜单
- C# WinForm中MenuStrip动态菜单使用总结
- C# WinForm中MenuStrip动态菜单使用总结
- C# WinForm中MenuStrip动态菜单使用总结
- C#树状视图动态加载Menustrip导航菜单
- C# 递归显示 TreeView 树状菜单树!
- WinForm中MenuStrip动态菜单使用总结
- C#的menuStrip(菜单)控件
- VS2005利用TreeView控件和递归函数动态生成树状菜单
- c# TreeView树形菜单
- c# TreeView树形菜单
- TreeView右键菜单小例子
- c#菜单与treeview初始化
- vb.net 用MenuStrip动态创建菜单,怎样添加子菜单,并增加click事件
- TreeView控件递归实现树形菜单
- 动态生成多级菜单
- 动态生成多级菜单
- com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '2147483
- andriod 驱动 IIC
- 鼠标闪烁 for ubuntu 以及 菜单栏重返应用程序窗口 for ubuntu14.04
- 【Struts2+Hibernate】数据校验功能+修改密码系统
- android java-jni 映射数组分析
- C# TreeView菜单,MenuStrip菜单递归动态生成例子
- nyoj108士兵杀敌
- uboot网口调试Marvell phy 88E1111
- ORA-12154: TNS: 无法解析指定的连接标识符
- Hibernate的复合主键映射
- [每天一个linux命令]tar
- cmd学习笔记
- [转]后缀数组求最长重复子串
- LightOJ 1102 Problem Makes Problem(组合数学)