123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Data;
- using System.Text;
- using System.Windows.Forms;
- using UAS_MES_NEW.DataOperate;
- using UAS_MES_NEW.Entity;
- using DevExpress.XtraNavBar;
- using System.Collections;
- using System.Reflection;
- namespace UAS_MES_NEW.CustomControl.AccordionMenu
- {
- public partial class NavagationBar : NavBarControl
- {
- StringBuilder sql = new StringBuilder();
- public static int WinIndex = 0;
- /// <summary>
- /// 记录当前功能面板中的按钮
- /// </summary>
- private ArrayList ArrFunButton = new ArrayList();
- /// <summary>
- /// 记录当前功能面板中的listview
- /// </summary>
- private ArrayList ArrFunListView = new ArrayList();
- /// <summary>
- /// 已经打开的Form
- /// </summary>
- public static Dictionary<string, int> OpenedFormName = new Dictionary<string, int>();
- public NavagationBar()
- {
- InitializeComponent();
- DataHelper dh = SystemInf.dh;
- if (dh == null)
- return;
- if (User.UserAccountType == "admin")
- {
- sql.Clear();
- sql.Append("select distinct sn_id,sn_detno,sn_module,sn_modulecode,sn_classname,sn_displayname,sn_caller ugp_caller,1 ugp_ifdelete,1 ugp_ifread,1 ugp_ifspecial,1 ugp_ifall,");
- sql.Append("1 ugp_ifwrite from CS$SYSNAVATION left join CS$USERGROUPPOWER on sn_caller=ugp_caller where sn_using=1 order by sn_modulecode,sn_detno");
- }
- else
- {
- sql.Clear();
- sql.Append("select sn_id,sn_detno,sn_module,sn_displayname,sn_modulecode,sn_classname,ugp_caller,max(ugp_ifdelete)ugp_ifdelete,max(ugp_ifread)ugp_ifread");
- sql.Append(",max(ugp_ifspecial)ugp_ifspecial,max(ugp_ifwrite)ugp_ifwrite,max(ugp_ifall)ugp_ifall from CS$USERGROUPPOWER ");
- sql.Append("left join CS$SYSNAVATION on sn_caller=ugp_caller where sn_using=1 and ugp_groupcode in ( select eg_groupcode from cs$empgroup ");
- sql.Append("left join cs$userresource on ur_groupcode = eg_groupcode where eg_emcode = '" + User.UserCode + "') and (nvl(ugp_ifread,0)<>0 or nvl(ugp_ifall,0)<>0) group by sn_id,sn_caller,sn_detno,sn_modulecode,sn_classname,sn_module,sn_displayname,ugp_caller order by sn_modulecode,sn_detno");
- }
- DataTable dt = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
- if (dt.Rows.Count == 0 && User.UserAccountType != "admin")
- {
- return;
- }
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- bool ContainGroup = false;
- string module_name = dt.Rows[i]["sn_module"].ToString();
- string caller = dt.Rows[i]["sn_displayname"].ToString();
- NavBarItem nbi = new NavBarItem(caller);
- nbi.Tag = dt.Rows[i]["sn_classname"].ToString();
- nbi.LinkClicked += Nbi_LinkClicked;
- nbi.Tag = dt.Rows[i]["sn_classname"].ToString();
- nbi.Hint = dt.Rows[i]["ugp_caller"].ToString();
- nbi.Name = dt.Rows[i]["sn_id"].ToString();
- for (int j = 0; j < Groups.Count; j++)
- {
- if (Groups[j].Caption == module_name)
- {
- ContainGroup = true;
- if (dt.Rows[i]["ugp_ifread"].ToString() != "0" || dt.Rows[i]["ugp_ifall"].ToString() != "0")
- {
- Groups[j].ItemLinks.Add(nbi);
- }
- }
- else
- {
- ContainGroup = false;
- }
- }
- if (!ContainGroup)
- {
- NavBarGroup nbg = new NavBarGroup(module_name);
- //如果加载Icon失败则加载默认图片
- try
- {
- nbg.LargeImage = new Bitmap(@Application.StartupPath + "/Resources/" + dt.Rows[i]["sn_module"].ToString() + ".png");
- }
- catch (Exception)
- {
- try
- {
- nbg.LargeImage = new Bitmap(@Application.StartupPath + "/Resources/defaulticon.png");
- }
- catch (Exception)
- {
- nbg.ImageUri = null;
- }
- }
- Groups.Add(nbg);
- nbg.ItemLinks.Add(nbi);
- }
- }
- //查询出的用户可见的Caller
- //将查询出的数据添加到队列中
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- //添加权限
- Dictionary<string, bool> dic = new Dictionary<string, bool>();
- dic.Add("IFDELETE", dt.Rows[i]["UGP_IFDELETE"].ToString() != "1" ? false : true);
- dic.Add("IFREAD", dt.Rows[i]["UGP_IFREAD"].ToString() != "1" ? false : true);
- dic.Add("IFWRITE", dt.Rows[i]["UGP_IFWRITE"].ToString() != "1" ? false : true);
- dic.Add("IFSPECIAL", dt.Rows[i]["UGP_IFSPECIAL"].ToString() != "1" ? false : true);
- dic.Add("IFALL", dt.Rows[i]["UGP_IFALL"].ToString() != "1" ? false : true);
- //之后通过Call来获取页面操作的权限
- if (SystemInf.Caller.ContainsKey(dt.Rows[i]["ugp_caller"].ToString()))
- {
- SystemInf.Caller.Remove(dt.Rows[i]["ugp_caller"].ToString());
- }
- SystemInf.Caller.Add(dt.Rows[i]["ugp_caller"].ToString(), dic);
- }
- }
- private void Nbi_LinkClicked(object sender, NavBarLinkEventArgs e)
- {
- NavBarItem nbi = (sender as NavBarItem);
- Form OpenForm = (Form)Assembly.GetExecutingAssembly().CreateInstance("UAS_MES_NEW." + nbi.Tag.ToString());
- OpenForm.Dock = DockStyle.Fill;
- OpenForm.Text = nbi.Caption;
- //用Tag保存Caller
- OpenForm.Tag = nbi.Hint;
- TabControl tc = (TabControl)this.Parent.Controls["MainTabControl"];
- //如果窗体不存在进行打开,item.ToolTip是Caller
- if (!OpenedFormName.ContainsKey(nbi.Hint))
- {
- TabPage tb = new TabPage { Name = nbi.Name, Tag = nbi.Hint, Text = OpenForm.Text };
- OpenForm.TopLevel = false;
- tc.TabPages.Add(tb);
- //直接选中新打开的界面
- tc.SelectedTab = tb;
- tb.Controls.Add(OpenForm);
- OpenedFormName.Add(nbi.Hint, WinIndex);
- tc.TabIndex = WinIndex;
- WinIndex++;
- OpenForm.Show();
- }
- //如果窗体已存在展示该窗体
- else
- tc.SelectTab(nbi.Name);
- }
- }
- }
|