Exemplo n.º 1
0
        /// <summary>
        /// 显示组的权限
        /// </summary>
        /// <param name="detailGroupAuths"></param>
        public void ShowGroupAutority(DataTable detailGroupAuths)
        {
            try
            {
                _treeAuthority.AfterCheck -= new TreeViewEventHandler(OnTreeAuthorityAfterCheck);
                //一级结点,模块的主菜单
                foreach (TreeNode node in _treeAuthority.Nodes)
                {
                    AuthNodeTag tag = node.Tag as AuthNodeTag;
                    if (tag.MenuItem.Tag != null && tag.MenuItem.Tag is MenuItemTag)
                    {
                        int     moduleTag = (tag.MenuItem.Tag as MenuItemTag).ModuleID;
                        DataRow row       = GetDataRowByMenuName(detailGroupAuths, moduleTag, tag.AuthID);
                        tag.DataRow = row;
                        string sCon = tb_sys_Function.FModelID + "=" + moduleTag.ToString() + " and " + tb_sys_Function.FNumber + " = '" + tag.AuthID + "'";
                        tag.FUnctionID = bllComDataBaseTool.GetTableFieldValue(tb_sys_Function.__TableName, tb_sys_Function.__KeyName, sCon);
                        node.Checked   = row != null;

                        if (node.Nodes.Count > 0)
                        {
                            ShowGroupAuthorityChild(node, detailGroupAuths);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Msg.ShowException(ex);
            }
            finally
            {
                _treeAuthority.AfterCheck += new TreeViewEventHandler(OnTreeAuthorityAfterCheck);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 显示组的权限,ShowGroupAutority方法的子程序
        /// </summary>
        /// <param name="node"></param>
        /// <param name="detailGroupAuths"></param>
        private void ShowGroupAuthorityChild(TreeNode node, DataTable detailGroupAuths)
        {
            foreach (TreeNode n in node.Nodes)
            {
                AuthNodeTag tag = n.Tag as AuthNodeTag;

                if (tag.MenuItem.Tag != null && tag.MenuItem.Tag is MenuItemTag)
                {
                    int     moduleID = (tag.MenuItem.Tag as MenuItemTag).ModuleID;
                    DataRow row      = GetDataRowByMenuName(detailGroupAuths, moduleID, tag.AuthID);
                    tag.DataRow = row;
                    n.Checked   = row != null;
                    string sCon = tb_sys_Function.FModelID + "=" + moduleID.ToString() + " and " + tb_sys_Function.FNumber + " = '" + tag.AuthID + "'";
                    tag.FUnctionID = bllComDataBaseTool.GetTableFieldValue(tb_sys_Function.__TableName, tb_sys_Function.__KeyName, sCon);

                    if (n.Checked)
                    {
                        this.TreeNodeParentSelected(n, true);
                    }

                    if (tag.MenuType == MenuType.DataForm)//show the business Actions
                    {
                        ShowAction(n, row);
                    }
                    else
                    if (n.Nodes.Count > 0)
                    {
                        ShowGroupAuthorityChild(n, detailGroupAuths);
                    }
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 递归处理子结点,GetGroupAuthorityChanges方法的子程序。
        /// </summary>
        /// <param name="node">父结点</param>
        /// <param name="auths">树视图绑定的权限数据</param>
        private void GetGroupAuthorityChangesChild(TreeNode node, DataTable auths)
        {
            foreach (TreeNode n in node.Nodes)
            {
                if ((n.Tag == null) || (!(n.Tag is AuthNodeTag)))
                {
                    continue;                           //非菜单项.
                }
                AuthNodeTag tag = n.Tag as AuthNodeTag; //树结点的引用对象

                if (tag.DataRow == null && n.Checked)   // 此结点是新增的,勾选状态
                {
                    AddAuthority(auths, n);
                }
                else if (tag.DataRow != null && n.Checked)                                  //处理勾选状态的结点
                {
                    int changed = GetActions(n);                                            //累加权限值
                    int oringed = int.Parse(tag.DataRow[tb_sys_UG_Auth.FAuths].ToString()); //取原始权限值
                    if (changed != oringed)
                    {
                        tag.DataRow[tb_sys_UG_Auth.FAuths] = changed;                     //如权限有修改,更新最新的权限值
                    }
                }
                else if (tag.DataRow != null && !n.Checked) //结点非勾选状态,表示已删除
                {
                    tag.DataRow.Delete();                   //删除资料行
                }
                if (n.Nodes.Count > 0)
                {
                    GetGroupAuthorityChangesChild(n, auths);
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 枚举树视图,生成保存用的临时数据。
        /// 思路:枚举树视图中所有树结点,跟据树结点的操作状态(新增,修改)生成资料行(DataRow)
        ///        新增:结点没绑定DataRow且结点打勾. 为新增权限
        ///        修改: 结点有绑定DataRow且结点没有打勾. 为删除权限
        /// </summary>
        /// <param name="auths">树视图绑定的权限数据</param>
        /// <returns></returns>
        private DataTable GetGroupAuthorityChanges(DataTable auths)
        {
            foreach (TreeNode node in _treeAuthority.Nodes)
            {
                AuthNodeTag tag = node.Tag as AuthNodeTag;

                //结点没绑定DataRow且结点打勾. 为新增权限
                if (tag.DataRow == null && node.Checked)
                {
                    AddAuthority(auths, node);
                }

                //结点有绑定DataRow且结点没有打勾. 为删除权限
                else if (tag.DataRow != null && !node.Checked)
                {
                    tag.DataRow.Delete();
                }

                //递归处理子结点
                if (node.Nodes.Count > 0)
                {
                    GetGroupAuthorityChangesChild(node, auths);
                }
            }

            //返回修改的记录
            DataTable ret = auths.GetChanges();

            return(ret == null?auths.Clone() : ret);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 增加菜单权限
        /// </summary>
        /// <param name="auths">权限表</param>
        /// <param name="node">当前处理的树结点</param>
        private void AddAuthority(DataTable auths, TreeNode node)
        {
            int actions  = 0;
            int moduleID = 0;

            AuthNodeTag tag = node.Tag as AuthNodeTag; //取树结点的引用对象

            //新增组权限记录
            DataRow newrow = auths.NewRow();

            if (_UGID == 0)
            {
                _UGID = Convert.ToInt32(BridgeFactory.CreateCommonServiceBridge().GetTableID(tb_sys_UG_Auth.__TableName, tb_sys_UG_Auth.__KeyName));
            }
            newrow[tb_sys_UG_Auth.FID] = _UGID.ToString();
            _UGID++;
            newrow[tb_sys_UG_Auth.FUGID] = _GroupID;
            string sFun = tag.DataRow == null?tag.FUnctionID.ToString() : tag.DataRow[tb_sys_UG_Auth.FunctionID].ToString();

            newrow[tb_sys_UG_Auth.FunctionID] = sFun == "" ? "0" : sFun;  //tag.DataRow == null ? tag.FUnctionID : tag.DataRow[tb_sys_UG_Auth.FunctionID];
            newrow[tb_sys_UG_Auth.FMenu]      = tag.AuthID;


            if (tag.MenuItem.Tag != null && tag.MenuItem.Tag is MenuItemTag)
            {
                //取当前处理的树结点所有权限值加总
                actions  = this.GetActions(node);
                moduleID = (tag.MenuItem.Tag as MenuItemTag).ModuleID;//模块编号
            }
            newrow[tb_sys_UG_Auth.FModelID] = moduleID;
            newrow[tb_sys_UG_Auth.FAuths]   = actions;
            //newrow[TUserRole.Authorities] = actions;
            //newrow[TUserRole.ModuleID] = moduleID;
            auths.Rows.Add(newrow);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 生成权限管理树视图 - 子级树结点
        /// </summary>
        private void InitAuthorityTreeChild(ToolStripMenuItem parent, TreeNode parentNode)
        {
            foreach (ToolStripItem item in parent.DropDownItems)
            {
                if (item is ToolStripSeparator)
                {
                    continue;                             //分隔符不在树显示
                }
                if (!Loginer.CurrentUser.IsAdmin() && !item.Enabled)
                {
                    continue;                                                  //没菜单权限.不加载树
                }
                AuthNodeTag tag     = new AuthNodeTag(item.Name, null, item);
                string      sfilter = string.Format(tb_sys_Function.FNumber + "='{0}'", item.Name);
                DataRow[]   rsF     = DataDictCache.Cache.Function.Select(sfilter);
                if (rsF.Length > 0)
                {
                    tag.DataRow = rsF[0];
                }
                string sCon = tb_sys_Function.FNumber + " = '" + tag.AuthID + "'";
                tag.FUnctionID = bllComDataBaseTool.GetTableFieldValue(tb_sys_Function.__TableName, tb_sys_Function.__KeyName, sCon);
                if (tag.FUnctionID == "")
                {
                    tag.FUnctionID = "0";
                }
                TreeNode node = new TreeNode(item.Text, 0, 0);
                node.Tag = tag;
                parentNode.Nodes.Add(node);

                if (item.Tag != null && item.Tag is MenuItemTag)       //数据窗体菜单
                {
                    if ((item.Tag as MenuItemTag).FormAuthorities > 0) //窗体有权限
                    {
                        node.ImageIndex         = 1;
                        node.SelectedImageIndex = 1;
                        InitAction(node, item); //生成功能点结点
                    }
                    else
                    {
                        node.ImageIndex         = 3; //signle form
                        node.SelectedImageIndex = 3;
                    }
                }
                else
                {
                    node.ImageIndex         = 3; //signle form
                    node.SelectedImageIndex = 3;
                }

                //处理子菜单
                if (item is ToolStripMenuItem && (item as ToolStripMenuItem).DropDownItems.Count > 0)
                {
                    InitAuthorityTreeChild(item as ToolStripMenuItem, node);
                }
            }
        }
Exemplo n.º 7
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);
                //}
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// 生成权限管理树视图 - 第一级树结点
        /// </summary>
        public void InitAuthorityTree()
        {
            try
            {
                //取按钮自定义名称数据表
                _FormTagCustomName = _MyBridge.GetFormTagCustomName();

                this._treeAuthority.BeforeCheck += new TreeViewCancelEventHandler(OnTreeAuthorityBeforeCheck);
                this._treeAuthority.AfterCheck  -= new TreeViewEventHandler(OnTreeAuthorityAfterCheck);
                this._treeAuthority.Nodes.Clear();
                this._treeAuthority.BeginUpdate();

                IMdiForm mainForm = (IMdiForm)_treeAuthority.FindForm().ParentForm;//取MDI主窗体的主菜单

                //枚举主窗体的菜单
                foreach (ToolStripItem item in mainForm.MainMenu.Items)
                {
                    if (item is ToolStripSeparator)
                    {
                        continue;                             //菜单分隔符不处理
                    }
                    if (item.Tag != null && item.Tag.ToString().ToUpper() == "IsSystemMenu".ToUpper())
                    {
                        continue;                                                                                //系统菜单不处理
                    }
                    if (!Loginer.CurrentUser.IsAdmin() && !item.Enabled)
                    {
                        continue;                                                  //没菜单权限(菜单不可用).不加载树
                    }
                    AuthNodeTag tag     = new AuthNodeTag(item.Name, null, item);
                    string      sfilter = string.Format(tb_sys_Function.FNumber + "='{0}'", item.Name);
                    DataRow[]   rsF     = DataDictCache.Cache.Function.Select(sfilter);
                    if (rsF.Length > 0)
                    {
                        tag.DataRow = rsF[0];
                    }
                    string sCon = tb_sys_Function.FNumber + " = '" + tag.AuthID + "'";
                    tag.FUnctionID = bllComDataBaseTool.GetTableFieldValue(tb_sys_Function.__TableName, tb_sys_Function.__KeyName, sCon);
                    if (tag.FUnctionID == "")
                    {
                        tag.FUnctionID = "0";
                    }
                    TreeNode node = new TreeNode(item.Text, 0, 0);
                    node.ImageIndex         = 0;
                    node.SelectedImageIndex = 0;
                    node.Tag = tag; //标记

                    this._treeAuthority.Nodes.Add(node);

                    //处理子菜单
                    if (item is ToolStripMenuItem && (item as ToolStripMenuItem).DropDownItems.Count > 0)
                    {
                        InitAuthorityTreeChild(item as ToolStripMenuItem, node);
                        node.Expand();
                    }
                }

                this._treeAuthority.EndUpdate();
                if (this._treeAuthority.Nodes.Count == 1)
                {
                    this._treeAuthority.Nodes[0].Expand();
                }
            }
            finally
            {
                this._treeAuthority.AfterCheck += new TreeViewEventHandler(OnTreeAuthorityAfterCheck);
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// 生成权限管理树视图 - 子级树结点
        /// </summary>
        private void InitAuthorityTreeChild(ToolStripMenuItem parent, TreeNode parentNode)
        {
            foreach (ToolStripItem item in parent.DropDownItems)
            {
                if (item is ToolStripSeparator) continue; //分隔符不在树显示
                if (!Loginer.CurrentUser.IsAdmin() && !item.Enabled) continue; //没菜单权限.不加载树

                AuthNodeTag tag = new AuthNodeTag(item.Name, null, item);
                string sfilter = string.Format(tb_sys_Function.FNumber + "='{0}'", item.Name);
                DataRow[] rsF = DataDictCache.Cache.Function.Select(sfilter);
                if (rsF.Length > 0)
                {
                    tag.DataRow = rsF[0];
                }
                string sCon =  tb_sys_Function.FNumber + " = '" + tag.AuthID + "'";
                tag.FUnctionID = bllComDataBaseTool.GetTableFieldValue(tb_sys_Function.__TableName, tb_sys_Function.__KeyName, sCon);
                if (tag.FUnctionID == "")
                    tag.FUnctionID = "0";
                TreeNode node = new TreeNode(item.Text, 0, 0);
                node.Tag = tag;
                parentNode.Nodes.Add(node);

                if (item.Tag != null && item.Tag is MenuItemTag) //数据窗体菜单
                {
                    if ((item.Tag as MenuItemTag).FormAuthorities > 0)//窗体有权限
                    {
                        node.ImageIndex = 1;
                        node.SelectedImageIndex = 1;
                        InitAction(node, item); //生成功能点结点
                    }
                    else
                    {
                        node.ImageIndex = 3; //signle form
                        node.SelectedImageIndex = 3;
                    }
                }
                else
                {
                    node.ImageIndex = 3; //signle form
                    node.SelectedImageIndex = 3;
                }

                //处理子菜单
                if (item is ToolStripMenuItem && (item as ToolStripMenuItem).DropDownItems.Count > 0)
                    InitAuthorityTreeChild(item as ToolStripMenuItem, node);
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// 生成权限管理树视图 - 第一级树结点
        /// </summary>
        public void InitAuthorityTree()
        {
            try
            {
                //取按钮自定义名称数据表
                _FormTagCustomName = _MyBridge.GetFormTagCustomName();

                this._treeAuthority.BeforeCheck += new TreeViewCancelEventHandler(OnTreeAuthorityBeforeCheck);
                this._treeAuthority.AfterCheck -= new TreeViewEventHandler(OnTreeAuthorityAfterCheck);
                this._treeAuthority.Nodes.Clear();
                this._treeAuthority.BeginUpdate();

                IMdiForm mainForm = (IMdiForm)_treeAuthority.FindForm().ParentForm;//取MDI主窗体的主菜单

                //枚举主窗体的菜单
                foreach (ToolStripItem item in mainForm.MainMenu.Items)
                {
                    if (item is ToolStripSeparator) continue; //菜单分隔符不处理
                    if (item.Tag != null && item.Tag.ToString().ToUpper() == "IsSystemMenu".ToUpper()) continue; //系统菜单不处理

                    if (!Loginer.CurrentUser.IsAdmin() && !item.Enabled) continue; //没菜单权限(菜单不可用).不加载树

                    AuthNodeTag tag = new AuthNodeTag(item.Name, null, item);
                    string sfilter = string.Format(tb_sys_Function.FNumber + "='{0}'" , item.Name);
                    DataRow[] rsF = DataDictCache.Cache.Function.Select(sfilter);
                    if (rsF.Length > 0)
                    {
                        tag.DataRow = rsF[0];
                    }
                    string sCon =  tb_sys_Function.FNumber + " = '" + tag.AuthID + "'";
                    tag.FUnctionID = bllComDataBaseTool.GetTableFieldValue(tb_sys_Function.__TableName, tb_sys_Function.__KeyName, sCon);
                    if (tag.FUnctionID == "")
                        tag.FUnctionID = "0";
                    TreeNode node = new TreeNode(item.Text, 0, 0);
                    node.ImageIndex = 0;
                    node.SelectedImageIndex = 0;
                    node.Tag = tag; //标记

                    this._treeAuthority.Nodes.Add(node);

                    //处理子菜单
                    if (item is ToolStripMenuItem && (item as ToolStripMenuItem).DropDownItems.Count > 0)
                    {
                        InitAuthorityTreeChild(item as ToolStripMenuItem, node);
                        node.Expand();
                    }
                }

                this._treeAuthority.EndUpdate();
                if (this._treeAuthority.Nodes.Count == 1) this._treeAuthority.Nodes[0].Expand();
            }
            finally
            {
                this._treeAuthority.AfterCheck += new TreeViewEventHandler(OnTreeAuthorityAfterCheck);
            }
        }