/// <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);
        }
Beispiel #2
0
        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();
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
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;
            }
        }
Beispiel #5
0
        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);
        }