下拉框显示多级菜单
效果图:
生成HTML源码:
表结构:
/// <summary> /// 绑定控件 /// </summary> protected void BindCtrl() {//上级菜单 SiteNavsBLL bllSiteNavs = new SiteNavsBLL(); BindNav(bllSiteNavs, 0); ddlParentNav.Items.Insert(0,new ListItem("一级菜单","0-0")); } /// <summary> /// 递归遍历菜单 /// </summary> /// <param name="bll"></param> /// <param name="ParentId"></param> protected void BindNav(SiteNavsBLL bll, long ParentId=0) { DataTable dtNav = bll.GetListJoin("ParentId=" + ParentId).Tables[0]; if (dtNav.Rows.Count <= 0) { return; } //遍历菜单 foreach (DataRow drNav in dtNav.Rows) { string dataText = ""; string dataValue = ""; //获取菜单级别 int NavLevel; if (!int.TryParse(drNav["NavLevel"].ToString(), out NavLevel)) { NavLevel = 1; } // |-- 菜单名称 for (int i = 0; i < NavLevel; i++) { dataText+="|- "; } dataText += drNav["Name"].ToString(); dataValue = drNav["NavLevel"].ToString() + "-" + drNav["Id"].ToString(); ddlParentNav.Items.Add(new ListItem(dataText, dataValue)); BindNav( bll, Convert.ToInt64(drNav["Id"])); } }
转载于:https://www.cnblogs.com/linyongqin/articles/6008803.html