/// <summary> /// 生成菜单树 /// </summary> /// <param name="menus"></param> /// <param name="parentMenuId"></param> /// <param name="nodes"></param> private int ResolveMenuTree(List <SYS_MENUSModel> menus, SYS_MENUSModel parentMenu, FineUI.TreeNodeCollection nodes) { int count = 0; foreach (var menu in menus.Where(m => m.Parent == parentMenu)) { FineUI.TreeNode node = new FineUI.TreeNode(); nodes.Add(node); count++; node.Text = menu.Name; node.IconUrl = menu.ImageUrl; if (!String.IsNullOrEmpty(menu.NavigateUrl)) { node.EnableClickEvent = false; node.NavigateUrl = ResolveUrl(menu.NavigateUrl); //node.OnClientClick = String.Format("addTab('{0}','{1}','{2}')", node.NodeID, ResolveUrl(menu.NavigateUrl), node.Text.Replace("'", "")); } if (menu.IsTreeLeaf) { node.Leaf = true; // 如果是叶子节点,但是不是超链接,则是空目录,删除 if (String.IsNullOrEmpty(menu.NavigateUrl)) { nodes.Remove(node); count--; } } else { //node.SingleClickExpand = true; int childCount = ResolveMenuTree(menus, menu, node.Nodes); // 如果是目录,但是计算的子节点数为0,可能目录里面的都是空目录,则要删除此父目录 if (childCount == 0 && String.IsNullOrEmpty(menu.NavigateUrl)) { nodes.Remove(node); count--; } } // } } return(count); }
private void BindDDL(SYS_MENUSModel current) { List <SYS_MENUSModel> mys = ResolveDDL <SYS_MENUSModel>(menuHelp.Menus, current.ID); // 绑定到下拉列表(启用模拟树功能和不可选择项功能) ddlParent.EnableSimulateTree = true; ddlParent.DataTextField = "Name"; ddlParent.DataValueField = "ID"; ddlParent.DataSimulateTreeLevelField = "TreeLevel"; ddlParent.DataEnableSelectField = "Enabled"; ddlParent.DataSource = mys; ddlParent.DataBind(); if (current.Parent != null) { // 选中当前节点的父节点 ddlParent.SelectedValue = current.Parent.ID.ToString(); } }
private void InitMenus() { _menus = new List <SYS_MENUSModel>(); /*以下代码实现构造权限列表 List<dbPowers>*/ List <SYS_POWERSModel> dbPowers = new List <SYS_POWERSModel>(); PowerModel.StartDate = DateTime.Parse("1900-01-01"); PowerModel.EndDate = DateTime.Now; DataSet ds_Power = XASYU.BLL.DataBaseQuery.query_SYS_POWERS(userBean, PowerModel, ref VP_ITOTALCOUNT, VP_SSTARTINDEX, VP_SPERPAGESIZE); if (ds_Power != null && ds_Power.Tables.Count > 0 && ds_Power.Tables[0] != null && ds_Power.Tables[0].Rows.Count > 0) { dbPowers = DataSetToIList <SYS_POWERSModel>(ds_Power, 0);//利用反射机制实现DataSet和List之间数据转换 } /*以下代码实现目录列表 List<dbMenus>*/ List <SYS_MENUSModel> dbMenus = new List <SYS_MENUSModel>(); MenuModel.StartDate = DateTime.Parse("1900-01-01"); MenuModel.EndDate = DateTime.Now; DataTable table = new DataTable(); DataSet ds = XASYU.BLL.DataBaseQuery.query_SYS_MENUS(userBean, MenuModel, ref VL_ITOTALCOUNT, V_SSTARTINDEX, V_SPERPAGESIZE); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0) { dbMenus = DataSetToIList <SYS_MENUSModel>(ds, 0);//利用反射机制实现DataSet和List之间数据转换 } /*以下代码实现功能是在menus节点中增加Parent节点和Power权限节点,以方便实现根据拥有权限加载不同目录*/ for (int i = 0; i < dbMenus.Count; i++) { if (dbMenus[i].ParentID != 0) { SYS_MENUSModel MenuTemp = dbMenus.Find(delegate(SYS_MENUSModel p) { return(p.ID == dbMenus[i].ParentID); }); dbMenus[i].Parent = MenuTemp; } if (dbMenus[i].ViewPowerID != 0) { SYS_POWERSModel PowerTemp = dbPowers.Find(delegate(SYS_POWERSModel q) { return(q.ID == dbMenus[i].ViewPowerID); }); dbMenus[i].ViewPower = PowerTemp; } } ResolveMenuCollection(dbMenus, null, 0); }
private void LoadData() { btnClose.OnClientClick = ActiveWindow.GetHideReference(); int id = GetQueryIntValue("id"); SYS_MENUSModel current = menuHelp.Menus .Where(m => m.ID == id).FirstOrDefault(); if (current == null) { // 参数错误,首先弹出Alert对话框然后关闭弹出窗口 Alert.Show("参数错误!", String.Empty, ActiveWindow.GetHideReference()); return; } tbxName.Text = current.Name; tbxUrl.Text = current.NavigateUrl; tbxSortIndex.Text = current.SortIndex.ToString(); tbxIcon.Text = current.ImageUrl; tbxRemark.Text = current.Remark; if (current.ViewPower != null) { tbxViewPower.Text = current.ViewPower.Name; } // 绑定上级菜单下拉列表 BindDDL(current); // 预置图标列表 InitIconList(iconList); if (!String.IsNullOrEmpty(current.ImageUrl)) { iconList.SelectedValue = current.ImageUrl; } }
private int ResolveMenuCollection(List <SYS_MENUSModel> dbMenus, SYS_MENUSModel parentMenu, int level) { int count = 0; foreach (var menu in dbMenus.Where(m => m.Parent == parentMenu)) { count++; _menus.Add(menu); menu.TreeLevel = level; menu.IsTreeLeaf = false; menu.Enabled = true; level++; int childCount = ResolveMenuCollection(dbMenus, menu, level); if (childCount != 0) { menu.IsTreeLeaf = false; } level--; } return(count); }