且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何动态分配菜单控件的导航url属性

更新时间:2023-09-29 08:10:46

尝试以下代码处理我的项目。将以下代码放在您的母版页中或放置菜单控件的位置。我在这里使用了List。您也可以使用相同的代码来使用数据表。 PopulateChildMenuItems 函数用于递归添加子菜单项



protected void Page_Load(object sender,EventArgs e)

{

if(HttpContext.Current.Session [UserDetails] == null)

{

Response.Redirect(〜/ Login.aspx);

}

if(!this.IsPostBack)

{

populateMenuItems() ;

}

}





protected void populateMenuItems()

{

userDetails =(UserBAL)(HttpContext.Current.Session [UserDetails]);



List&lt ; menubal> menuItems = CacheMaster.getMenuList(userDetails.UserID); //MenuDAL.getMenuList(userDetails.UserID);



List< menubal> parentMenuItems = menuItems.FindAll(x => x.ParentMenuID == 0);





foreach(parentMenuItems中的MenuBAL项目)

{

MenuItem mnuParent = new MenuItem();

//mnuParent.Target = item.MenuURL;

mnuParent.Text = item.MenuName;

mnuParent.NavigateUrl = item.MenuURL;

mnuParent.Value = item.MenuID.ToString();



populateChildItems(ref mnuParent,menuItems);



mnuMain.Items.Add(mnuParent);

}

}



protected void populateChildItems(ref MenuItem parentMenuItem,List< menubal> menuList)

{

Int32 parentMenuID = Convert.ToInt32(parentMenuItem.Value);

List< menubal> childItems = menuList.FindAll(x => x.ParentMenuID == parentMenuID);



foreach(childItems中的MenuBAL项目)

{

MenuItem childMenu = new MenuItem();



childMenu.Text = item.MenuName;

// childMenu.Target = item.MenuURL;

childMenu.NavigateUrl = item.MenuURL;

childMenu.Value = item.MenuID.ToString();



populateChildItems(ref childMenu,menuList);



parentMenuItem.ChildItems.Add(childMenu);

}

}
try the below code its working on my projects. Put the below code in your master page or where ever you have the menu control placed. I have used List here. You can use data table also using the same code. PopulateChildMenuItems function is called for recursively adding child menu items

protected void Page_Load(object sender, EventArgs e)
{
if (HttpContext.Current.Session["UserDetails"] == null)
{
Response.Redirect("~/Login.aspx");
}
if (!this.IsPostBack)
{
populateMenuItems();
}
}


protected void populateMenuItems()
{
userDetails = (UserBAL)(HttpContext.Current.Session["UserDetails"]);

List<menubal> menuItems = CacheMaster.getMenuList(userDetails.UserID); //MenuDAL.getMenuList(userDetails.UserID);

List<menubal> parentMenuItems = menuItems.FindAll(x => x.ParentMenuID == 0);


foreach (MenuBAL item in parentMenuItems)
{
MenuItem mnuParent = new MenuItem();
//mnuParent.Target = item.MenuURL;
mnuParent.Text = item.MenuName;
mnuParent.NavigateUrl = item.MenuURL;
mnuParent.Value = item.MenuID.ToString();

populateChildItems(ref mnuParent, menuItems);

mnuMain.Items.Add(mnuParent);
}
}

protected void populateChildItems(ref MenuItem parentMenuItem, List<menubal> menuList)
{
Int32 parentMenuID = Convert.ToInt32(parentMenuItem.Value);
List<menubal> childItems = menuList.FindAll(x => x.ParentMenuID == parentMenuID);

foreach (MenuBAL item in childItems)
{
MenuItem childMenu = new MenuItem();

childMenu.Text = item.MenuName;
//childMenu.Target = item.MenuURL;
childMenu.NavigateUrl = item.MenuURL;
childMenu.Value = item.MenuID.ToString();

populateChildItems(ref childMenu, menuList);

parentMenuItem.ChildItems.Add(childMenu);
}
}