Exemplo n.º 1
0
        /// <summary>已重载。删除关联数据</summary>
        /// <returns></returns>
        protected override int OnDelete()
        {
            if (MenuButtons != null)
            {
                MenuButtons.Delete();
            }

            return(base.OnDelete());
        }
Exemplo n.º 2
0
        /// <summary>已重载。在事务保护范围内处理业务,位于Valid之后</summary>
        /// <returns></returns>
        protected override int OnUpdate()
        {
            Int32  result        = base.OnUpdate();
            String haveButtonIDs = "";

            if (MenuButtons != null && MenuButtons.Count > 0)
            {
                foreach (var item in MenuButtons)
                {
                    haveButtonIDs += item.ButtonID + ",";
                }
                //去除最后的逗号
                haveButtonIDs = haveButtonIDs.TrimEnd(',');
            }
            //如果不相等说明按钮被修改了
            if (haveButtonIDs != ButtonIDs)
            {
                //先删除后添加
                if (MenuButtons != null && MenuButtons.Count > 0)
                {
                    MenuButtons.Delete();
                }
                if (!String.IsNullOrEmpty(ButtonIDs))
                {
                    Int32[] ss = ButtonIDs.SplitAsInt(",");
                    if (ss != null && ss.Length > 0)
                    {
                        EntityList <MenuButton> list = new EntityList <MenuButton>();
                        foreach (Int32 buttonID in ss)
                        {
                            var m = new MenuButton();
                            m.ButtonID = buttonID;
                            m.MenuID   = ID;
                            list.Add(m);
                        }
                        list.Insert(true);
                    }
                }
                //如果只是更改了按钮菜单根不会重新设置,需要手动设置为null,否则扩展属性的缓存不会更新
                Menu.Root = null;
                //这里还需要清空菜单的缓存,否则从缓存中重新读取数据时扩展属性还是旧的
                Menu.Meta.Cache.Clear(String.Format("菜单{0}更新了菜单按钮", Name));
                //Menu.Meta.Cache.Entities.Clear();
                //MenuButton.Meta.Cache.Entities.Clear();
                //Menu.Meta.Cache.Clear(String.Format("菜单{0}更新了菜单按钮",Name));
            }
            return(result);
        }