protected void Page_Load(object sender, EventArgs e)
...{
DataTable dt = SQLHelper.Fill("select * from menus");
string parentMenuFilter = "ParentMenu=0";
BindMenuItems(dt, parentMenuFilter);
}
private void BindMenuItems(DataTable dt,string strParentNodeFilter)
...{
DataRow[] drs = dt.Select(strParentNodeFilter);
foreach (DataRow dr in drs)
...{
MenuItem menuNode = new MenuItem();
menuNode.Text = dr["MenuName"].ToString();
menuNode.Value = dr["MenuId"].ToString();
menuNode.NavigateUrl = dr["MenuNavURL"].ToString();
menuNode.Enabled = true;
menuNode.Selectable = true;
this.MenuTest.Items.Add(menuNode);
AddChildMenu(menuNode, Convert.ToInt32(dr["MenuId"].ToString()),dt);
}
}
private void AddChildMenu(MenuItem node,int parentID,DataTable dt)
...{
DataRow[] drs = dt.Select("ParentMenu= " + parentID);
foreach (DataRow dr in drs)
...{
MenuItem menuNode = new MenuItem();
menuNode.Text = dr["MenuName"].ToString();
menuNode.Value = dr["MenuId"].ToString();
menuNode.NavigateUrl = dr["MenuNavURL"].ToString();
menuNode.Enabled = true;
menuNode.Selectable = true;
node.ChildItems.Add(menuNode);
AddChildMenu(menuNode, Convert.ToInt32(dr["MenuId"].ToString()),dt);
}
}
本文介绍了一种使用 C# 在 ASP.NET 应用中递归加载多级菜单的方法。通过从数据库获取菜单数据并利用 DataTable 对象进行筛选,实现了父级和子级菜单项的动态创建及绑定。
147

被折叠的 条评论
为什么被折叠?



