Example #1
0
        /// <summary>
        /// 更新菜单标题
        /// </summary>
        /// <param name="item"></param>
        private void UpdateMenu(ToolStripItem item)
        {
            MenuItemTag tag    = item.Tag as MenuItemTag;
            string      filter = string.Format("FNumber='{0}' and FModelID={1}", item.Name, tag.ModuleID);

            DataRow[] exists = _SummaryTable.Select(filter);
            if (exists.Length > 0)
            {
                string caption = ConvertEx.ToString(exists[0][tb_sys_Function.FName]);
                if (caption != item.Text)
                {
                    _LastUpdated += 1;
                    exists[0][tb_sys_Function.FName] = item.Text; //更新菜单标题.
                }
            }
            else
            {
                DataRow append = _SummaryTable.NewRow();
                append[tb_sys_Function.FID]       = Convert.ToInt32(BridgeFactory.CreateCommonServiceBridge().GetTableID(tb_sys_Function.__TableName, tb_sys_Function.__KeyName)) + _LastInserted;
                append[tb_sys_Function.FAuths]    = tag.FormAuthorities;
                append[tb_sys_Function.FName]     = item.Text;
                append[tb_sys_Function.FNumber]   = item.Name;
                append[tb_sys_Function.FMenuType] = tag.MenuType.ToString();
                append[tb_sys_Function.FModelID]  = tag.ModuleID;
                _SummaryTable.Rows.Add(append);

                _LastInserted += 1;
            }
        }
Example #2
0
        /// <summary>
        /// 更新菜单标题
        /// </summary>
        /// <param name="item"></param>
        private void UpdateMenu(ToolStripItem item)
        {
            MenuItemTag tag    = item.Tag as MenuItemTag;
            string      filter = string.Format("MenuName='{0}' and ModuleID={1}", item.Name, tag.ModuleID);

            DataRow[] exists = _SummaryTable.Select(filter);
            if (exists.Length > 0)
            {
                string caption = ConvertEx.ToString(exists[0][TMenu.MenuCaption]);
                if (caption != item.Text)
                {
                    _LastUpdated += 1;
                    exists[0][TMenu.MenuCaption] = item.Text; //更新菜单标题.
                }
            }
            else
            {
                DataRow append = _SummaryTable.NewRow();
                append[TMenu.Auths]       = tag.FormAuthorities;
                append[TMenu.MenuCaption] = item.Text;
                append[TMenu.MenuName]    = item.Name;
                append[TMenu.MenuType]    = tag.MenuType.ToString();
                append[TMenu.ModuleID]    = tag.ModuleID;
                _SummaryTable.Rows.Add(append);

                _LastInserted += 1;
            }
        }
        /// <summary>
        /// 初始化功能点树结点
        /// </summary>
        /// <param name="node">功能点所在的树结点</param>
        /// <param name="menuItem">菜单项</param>
        private void InitAction(TreeNode node, ToolStripItem menuItem)
        {
            if (menuItem.Tag == null || !(menuItem.Tag is MenuItemTag))
            {
                return;                                            //功能菜单没有分配权限,不处理
            }
            MenuItemTag menuItemTag = menuItem.Tag as MenuItemTag; //取菜单的功能权限对象

            if (menuItemTag.MenuType != MenuType.DataForm)
            {
                return;                                           //只处理数据窗体
            }
            if (menuItemTag.FormAuthorities == 0)
            {
                return;                                   //此菜单对应的窗体没有分配权限(功能点)
            }
            //取当前菜单权限.SystemAuthentication.UserAuthorities当前用户的权限数据
            DataRow auth = GetDataRowByMenuName(SystemAuthentication.UserAuthorities, menuItemTag.ModuleID, menuItem.Name);

            int userAuths = auth == null ? 0 : ConvertEx.ToInt(auth[TUserRole.Authorities]); //当前用户拥有此菜单的权限
            //---huhai modify 20161007
            int formAuths = GetFormAuthority("", menuItemTag.ModuleID, menuItem.Name);       // menuItemTag.FormAuthorities; //窗体可用的功能点

            bool isAdmin = Loginer.CurrentUser.IsAdmin();                                    //是否系统管理员

            foreach (DataRow row in _AuthorityItem.Rows)                                     //循环所有功能点.
            {
                int value = int.Parse(row["AuthorityValue"].ToString());                     //功能点权限值
                if (value == 0)
                {
                    continue;            //不显示权限值为0的功能点
                }
                //用每个功能点的值与窗体的最大权限进行逻辑"与"运算, 但不能超出当前用户的权限.
                if (((value & formAuths) == value) && (isAdmin || ((value & userAuths) == value)))
                {
                    string  caption    = row["AuthorityName"].ToString();        //取功能点名称
                    DataRow tagNameRow = GetCustomTagName(menuItem.Name, value); //取功能点的自定义名称资料行
                    if (tagNameRow != null)
                    {
                        caption = tagNameRow["TagName"].ToString();                    //如果有自定义名称,则取定义名
                    }
                    //构建一个树结点Tag属性的引用对象,Node.Tag=引用对象
                    ActionNodeTag tag = new ActionNodeTag(value, auth);
                    tag.TagMenuNameRef = menuItem.Name;
                    tag.TagNameTable   = _FormTagCustomName;
                    tag.TagNameDataRow = tagNameRow;
                    tag.TagNameOld     = caption;                      //按钮标题

                    TreeNode actionNode = new TreeNode(caption, 0, 0); //新增树结点
                    actionNode.Tag                = tag;               //绑定引用的对象
                    actionNode.ImageIndex         = 2;
                    actionNode.SelectedImageIndex = 2;

                    node.Nodes.Add(actionNode);
                }
            }
        }
        /// <summary>
        /// 打开子窗体.
        /// </summary>
        /// <param name="mdi">MDI主窗体</param>
        /// <param name="formType">子窗体的类型</param>
        /// <param name="ToolStripMenuItem">打开窗体的菜单项</param>
        public static Form OpenChildForm(IMdiForm mdi, Type formType, ToolStripMenuItem sender)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;
                Form form = ActiveChildForm(mdi as Form, formType.ToString()); //试图激活已打开的子窗体
                if (form != null)
                {
                    form.Show(); return(form);
                }                                               //如子窗体已打开显示子窗体并退出

                //通过反射创建窗体实例.
                form = (Form)formType.Assembly.CreateInstance(formType.FullName);

                //创建窗体实例失败
                if (form == null)
                {
                    throw new Exception("未知窗体类型!");
                }

                //是系统定义的子窗体
                if (form is IMdiChildForm)
                {
                    form.MdiParent = (Form)mdi;                                 //设置主窗体

                    (form as IMdiChildForm).ToolbarRegister = mdi.MdiToolbar;   //绑定主窗体的Toolbar对象
                    (form as IMdiChildForm).RegisterObserver(mdi.MdiObservers); //注册子窗体的观察者
                }

                //支持权限控制的子窗体
                if (form is IPurviewControllable)
                {
                    if (sender != null && sender.Tag is MenuItemTag)
                    {
                        MenuItemTag tag  = sender.Tag as MenuItemTag;
                        int         auth = new bllGroupAuthority().GetFormAuthority(Loginer.CurrentUser.Account, tag.ModuleID, sender.Name); //获取窗体的权限
                        (form as IPurviewControllable).FormAuthorities = auth;                                                               //本窗体的权限值
                        (form as IPurviewControllable).FormMenuName    = sender.Name;                                                        //绑定打开窗体的菜单名
                    }
                }

                form.Show();//显示窗体
                return(form);
            }
            catch (Exception ex)
            {
                Msg.Warning("打开窗体时出现错误!\r\n" + ex.Message);
                return(null);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
Example #5
0
        /// <summary>
        /// 初始化功能点树结点
        /// </summary>
        /// <param name="node">功能点所在的树结点</param>
        /// <param name="menuItem">菜单项</param>
        private void InitAction(TreeNode node, ToolStripItem menuItem)
        {
            if (menuItem.Tag == null || !(menuItem.Tag is MenuItemTag))
            {
                return;                                            //功能菜单没有分配权限,不处理
            }
            MenuItemTag menuItemTag = menuItem.Tag as MenuItemTag; //取菜单的功能权限对象

            if (menuItemTag.MenuType != MenuType.DataForm)
            {
                return;                                           //只处理数据窗体
            }
            if (menuItemTag.FormAuthorities == 0)
            {
                return;                                   //此菜单对应的窗体没有分配权限(功能点)
            }
            //取当前菜单权限.SystemAuthentication.UserAuthorities当前用户的权限数据
            DataRow auth = GetDataRowByMenuName(SystemAuthentication.UserAuthorities, menuItemTag.ModuleID, menuItem.Name);

            int         userAuths = auth == null ? 0 : ConvertEx.ToInt(auth[tb_sys_UG_Auth.FAuths]); //当前用户拥有此菜单的权限
            AuthNodeTag tag1      = node.Tag as AuthNodeTag;                                         //取树结点的引用对象
            //int formAuths = menuItemTag.FormAuthorities; //窗体可用的功能点
            bool   isAdmin   = Loginer.CurrentUser.IsAdmin();                                        //是否系统管理员
            int    formAuths = tag1.DataRow == null ? 0 :Convert.ToInt32(tag1.DataRow[tb_sys_Function.FAuths].ToString());
            string sFun      = tag1.DataRow == null?tag1.FUnctionID.ToString() : tag1.DataRow[tb_sys_Function.__KeyName].ToString();

            string filter = string.Format(tb_sys_Fun_MenuBar.FFunctionID + "={0}", sFun);

            DataRow[] rs = _AuthorityItem.Select(filter);
            foreach (DataRow row in rs)                                               //循环所有功能点.
            {
                int value = int.Parse(row[tb_sys_Fun_MenuBar.FAuthority].ToString()); //功能点权限值
                if (value == 0)
                {
                    continue;            //不显示权限值为0的功能点
                }
                if ((value & formAuths) != value)
                {
                    continue;
                }
                //用每个功能点的值与窗体的最大权限进行逻辑"与"运算, 但不能超出当前用户的权限.
                //if (isAdmin || ((value & userAuths) == value))
                //{
                string caption = row[tb_sys_Fun_MenuBar.FName].ToString();     //取功能点名称
                //DataRow tagNameRow = GetCustomTagName(menuItem.Name, value); //取功能点的自定义名称资料行
                //if (tagNameRow != null) caption = tagNameRow["TagName"].ToString();//如果有自定义名称,则取定义名

                //构建一个树结点Tag属性的引用对象,Node.Tag=引用对象
                ActionNodeTag tag = new ActionNodeTag(value, auth);
                tag.TagMenuNameRef = menuItem.Name;
                tag.TagNameTable   = _FormTagCustomName;
                tag.TagNameDataRow = row;
                tag.TagNameOld     = caption;                      //按钮标题

                TreeNode actionNode = new TreeNode(caption, 0, 0); //新增树结点
                actionNode.Tag                = tag;               //绑定引用的对象
                actionNode.ImageIndex         = 2;
                actionNode.SelectedImageIndex = 2;

                node.Nodes.Add(actionNode);
                //}
            }
        }
Example #6
0
        /// <summary>
        /// 打开子窗体.
        /// </summary>
        /// <param name="mdi">MDI主窗体</param>
        /// <param name="formType">子窗体的类型</param>
        /// <param name="ToolStripMenuItem">打开窗体的菜单项</param>
        public static Form OpenChildForm(IMdiForm mdi, Type formType, ToolStripMenuItem sender)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;
                Form form = ActiveChildForm(mdi as Form, formType.ToString()); //试图激活已打开的子窗体
                if (form != null)
                {
                    form.Show(); return(form);
                }                                               //如子窗体已打开显示子窗体并退出

                //通过反射创建窗体实例.
                form = (Form)formType.Assembly.CreateInstance(formType.FullName);

                //创建窗体实例失败
                if (form == null)
                {
                    throw new Exception("未知窗体类型!");
                }

                //是系统定义的子窗体
                if (form is IMdiChildForm)
                {
                    form.MdiParent = (Form)mdi;                                 //设置主窗体

                    (form as IMdiChildForm).ToolbarRegister = mdi.MdiToolbar;   //绑定主窗体的Toolbar对象
                    (form as IMdiChildForm).RegisterObserver(mdi.MdiObservers); //注册子窗体的观察者
                }

                //支持权限控制的子窗体
                if (form is IPurviewControllable)
                {
                    if (sender != null && sender.Tag is MenuItemTag)
                    {
                        MenuItemTag tag = sender.Tag as MenuItemTag;
                        //int auth = new bllGroupAuthority().GetFormAuthority(Loginer.CurrentUser.Account, tag.ModuleID, sender.Name); //获取窗体的权限
                        //if (auth < 1 && (!Loginer.CurrentUser.IsAdmin()))
                        //{
                        int       auth     = 0;
                        int       authShow = 0;
                        DataRow[] rows     = SystemAuthentication.UserAuthorities.Select(string.Format("FNUM='{0}' ", sender.Name));
                        //int auth = new bllGroupAuthority().GetFormAuthority(Loginer.CurrentUser.Account, tag.ModuleID, sender.Name); //获取窗体的权限
                        if (rows.Length < 1 && (!Loginer.CurrentUser.IsAdmin()))
                        {
                            Msg.ShowError("您没有" + sender.Text + "的权限");
                            return(null);
                        }
                        else
                        {
                            if (rows.Length > 0)
                            {
                                auth = Convert.ToInt32(rows[0]["FAUTHS"]);
                            }

                            DataRow[] rs = DataDictCache.Cache.Function.Select(string.Format("FNumber='{0}'", sender.Name));
                            if (rs.Length > 0)
                            {
                                if (auth == 0)
                                {
                                    auth = Convert.ToInt32(rs[0]["FAUTHS"]);
                                }
                                authShow = Convert.ToInt32(rs[0]["FAUTHS"]);
                            }
                            (form as IPurviewControllable).FormAuthorities     = auth;                                          //本窗体工具栏的权限值
                            (form as IPurviewControllable).FormAuthoritiesShow = authShow;                                      //本窗体工具栏的权限值
                            (form as IPurviewControllable).FormMenuName        = sender.Name;                                   //绑定打开窗体的菜单名
                            (form as IPurviewControllable).FunctionID          = bllComDataBaseTool.GetFunctionID(sender.Name); //功能ID
                        }
                    }
                }

                form.Show();//显示窗体
                return(form);
            }
            catch (Exception ex)
            {
                Msg.Warning("打开窗体时出现错误!\r\n" + ex.Message);
                return(null);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }