/// <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; } }
/// <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; } }
/// <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); //} } }
/// <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; } }