/// <summary> /// 重新加载菜单 /// </summary> private void ReLoadNode() { errmsg.Text = ""; tbshowname = "所有权限组"; dbtbname.Text = "auth_group"; if (Request["sortid"] == null || Request["sortid"].ToString().Trim() == "") { sh_SortID.Text = "0"; ee_SortID.Text = "0"; } else { sh_SortID.Text = Request["sortid"].ToString().Trim(); ee_SortID.Text = Request["sortid"].ToString().Trim(); } //加载原始数据等待修改 if (sh_SortID.Text == "0" || sh_SortID.Text == "" || dbtbname.Text == "") { } else { //调用执行方法获取数据 DataSet dsD = new DataSet(); object[] re_dsiD = IPC.Call("获取单条菜单数据", new object[] { dbtbname.Text, sh_SortID.Text }); if (re_dsiD[0].ToString() == "ok") { //这个就是得到远程方法真正的返回值,不同类型的,自行进行强制转换即可。 dsD = (DataSet)re_dsiD[1]; try { ee_SortName.Text = dsD.Tables["数据记录"].Rows[0]["SortName"].ToString(); sh_SortName.Text = dsD.Tables["数据记录"].Rows[0]["SortName"].ToString(); //把已有的权限分解并展示 Dictionary <string, string> dic_Unumber1 = AuthComm.GetEnumFormUnumber(dsD.Tables["数据记录"].Rows[0]["Unumber1"].ToString()); foreach (KeyValuePair <string, string> kv in dic_Unumber1) { ListItem lt = Unumber1.Items.FindByValue(kv.Value); if (lt != null) { lt.Selected = true; } } Dictionary <string, string> dic_Unumber2 = AuthComm.GetEnumFormUnumber(dsD.Tables["数据记录"].Rows[0]["Unumber2"].ToString()); foreach (KeyValuePair <string, string> kv in dic_Unumber2) { ListItem lt = Unumber2.Items.FindByValue(kv.Value); if (lt != null) { lt.Selected = true; } } Dictionary <string, string> dic_Unumber3 = AuthComm.GetEnumFormUnumber(dsD.Tables["数据记录"].Rows[0]["Unumber3"].ToString()); foreach (KeyValuePair <string, string> kv in dic_Unumber3) { ListItem lt = Unumber3.Items.FindByValue(kv.Value); if (lt != null) { lt.Selected = true; } } Dictionary <string, string> dic_Unumber4 = AuthComm.GetEnumFormUnumber(dsD.Tables["数据记录"].Rows[0]["Unumber4"].ToString()); foreach (KeyValuePair <string, string> kv in dic_Unumber4) { ListItem lt = Unumber4.Items.FindByValue(kv.Value); if (lt != null) { lt.Selected = true; } } Dictionary <string, string> dic_Unumber5 = AuthComm.GetEnumFormUnumber(dsD.Tables["数据记录"].Rows[0]["Unumber5"].ToString()); foreach (KeyValuePair <string, string> kv in dic_Unumber5) { ListItem lt = Unumber5.Items.FindByValue(kv.Value); if (lt != null) { lt.Selected = true; } } } catch (Exception ex) { errmsg.Text = "获取数据出错"; } } else { errmsg.Text = re_dsiD[1].ToString();//向客户端输出错误字符串 } } TV.Nodes.Clear(); //调用执行方法获取数据 DataTable dt = new DataTable(); object[] re_dsi = IPC.Call("获取菜单数据", new object[] { dbtbname.Text, 0, 1 }); if (re_dsi[0].ToString() == "ok") { //这个就是得到远程方法真正的返回值,不同类型的,自行进行强制转换即可。 dt = (DataTable)re_dsi[1]; } else { errmsg.Text = re_dsi[1].ToString();//向客户端输出错误字符串 } this.InitNode(dt); //TV.ExpandAll(); }
protected void Button4_Click(object sender, EventArgs e) { Label4.Text = "__" + string.Join(",", AuthComm.GetEnumFormUnumber("0").Values.ToArray()) + "__"; }
protected void Page_Load(object sender, EventArgs e) { //验证权限 AuthComm.chekcAuth_fromsession("4", UserSession.最终权值_后台菜单权限, true); if (!IsPostBack) { if (Request["UAid"] == null || Request["UAid"].ToString().Trim() == "") { ; } else { string UAid = Request["UAid"].ToString().Trim(); //有UAid,开始找数据,找到了才能修改 DataSet ds = new DataSet(); object[] re_dsi = IPC.Call("获取单个用户权限", new object[] { UAid }); if (re_dsi[0].ToString() == "ok" && re_dsi[1] != null) { //这个就是得到远程方法真正的返回值,不同类型的,自行进行强制转换即可。 ds = (DataSet)re_dsi[1]; if (ds.Tables["返回值单条"].Rows[0]["执行结果"].ToString() == "ok") { //超管账号不允许编辑 if (ds.Tables["数据记录"].Rows[0]["SuperUser"].ToString() == "1") { addbutton1.Enabled = false; addbutton1.Text = "超管账号不能进行编辑"; } quyu_zhao.Visible = false; quyu_peizhi.Visible = true; //把可用的权限组弄上 //调用执行方法获取数据 DataTable dtdtD = new DataTable(); object[] re_dsiD = IPC.Call("获取菜单数据", new object[] { "auth_group", 0, 1 }); if (re_dsiD[0].ToString() == "ok") { //这个就是得到远程方法真正的返回值,不同类型的,自行进行强制转换即可。 dtdtD = (DataTable)re_dsiD[1]; Uingroups.DataSource = dtdtD; Uingroups.DataTextField = "SortNameTree"; Uingroups.DataValueField = "SortID"; Uingroups.DataBind(); } else { errmsg.InnerHtml = re_dsiD[1].ToString();//向客户端输出错误字符串 } //把下拉菜单默认值弄上 ee_UAid.Text = ds.Tables["数据记录"].Rows[0]["UAid"].ToString(); ee_Uloginname.Text = ds.Tables["数据记录"].Rows[0]["Uloginname"].ToString(); UfinalUnumber.Text = ds.Tables["数据记录"].Rows[0]["UfinalUnumber1"].ToString() + "," + ds.Tables["数据记录"].Rows[0]["UfinalUnumber2"].ToString() + "," + ds.Tables["数据记录"].Rows[0]["UfinalUnumber3"].ToString() + "," + ds.Tables["数据记录"].Rows[0]["UfinalUnumber4"].ToString() + "," + ds.Tables["数据记录"].Rows[0]["UfinalUnumber5"].ToString(); //调用执行方法获取数据 DataSet dsQ = new DataSet(); object[] re_dsiQ = IPC.Call("获取所有已启用的权限枚举", new object[] { "隐藏开发专用" }); if (re_dsiQ[0].ToString() == "ok" && re_dsiQ[1] != null) { //这个就是得到远程方法真正的返回值,不同类型的,自行进行强制转换即可。 dsQ = (DataSet)re_dsiQ[1]; Unumber1.DataSource = dsQ.Tables[0]; Unumber1.DataTextField = "ANBaseName"; Unumber1.DataValueField = "ANBaseNumber"; Unumber1.DataBind(); Unumber2.DataSource = dsQ.Tables[1]; Unumber2.DataTextField = "ANBaseName"; Unumber2.DataValueField = "ANBaseNumber"; Unumber2.DataBind(); Unumber3.DataSource = dsQ.Tables[2]; Unumber3.DataTextField = "ANBaseName"; Unumber3.DataValueField = "ANBaseNumber"; Unumber3.DataBind(); Unumber4.DataSource = dsQ.Tables[3]; Unumber4.DataTextField = "ANBaseName"; Unumber4.DataValueField = "ANBaseNumber"; Unumber4.DataBind(); Unumber5.DataSource = dsQ.Tables[4]; Unumber5.DataTextField = "ANBaseName"; Unumber5.DataValueField = "ANBaseNumber"; Unumber5.DataBind(); } else { errmsg.InnerHtml = re_dsiQ[0].ToString();//向客户端输出错误字符串 } //给对应的地方赋值 Dictionary <string, string> dic_Unumber1 = AuthComm.GetEnumFormUnumber(ds.Tables["数据记录"].Rows[0]["Unumber1"].ToString()); foreach (KeyValuePair <string, string> kv in dic_Unumber1) { ListItem lt = Unumber1.Items.FindByValue(kv.Value); if (lt != null) { lt.Selected = true; } } Dictionary <string, string> dic_Unumber2 = AuthComm.GetEnumFormUnumber(ds.Tables["数据记录"].Rows[0]["Unumber2"].ToString()); foreach (KeyValuePair <string, string> kv in dic_Unumber2) { ListItem lt = Unumber2.Items.FindByValue(kv.Value); if (lt != null) { lt.Selected = true; } } Dictionary <string, string> dic_Unumber3 = AuthComm.GetEnumFormUnumber(ds.Tables["数据记录"].Rows[0]["Unumber3"].ToString()); foreach (KeyValuePair <string, string> kv in dic_Unumber3) { ListItem lt = Unumber3.Items.FindByValue(kv.Value); if (lt != null) { lt.Selected = true; } } Dictionary <string, string> dic_Unumber4 = AuthComm.GetEnumFormUnumber(ds.Tables["数据记录"].Rows[0]["Unumber4"].ToString()); foreach (KeyValuePair <string, string> kv in dic_Unumber4) { ListItem lt = Unumber4.Items.FindByValue(kv.Value); if (lt != null) { lt.Selected = true; } } Dictionary <string, string> dic_Unumber5 = AuthComm.GetEnumFormUnumber(ds.Tables["数据记录"].Rows[0]["Unumber5"].ToString()); foreach (KeyValuePair <string, string> kv in dic_Unumber5) { ListItem lt = Unumber5.Items.FindByValue(kv.Value); if (lt != null) { lt.Selected = true; } } string[] groupstr = ds.Tables["数据记录"].Rows[0]["Uingroups"].ToString().Split(','); for (int i = 0; i < groupstr.Count(); i++) { if (groupstr[i].Trim() != "") { ListItem lt = Uingroups.Items.FindByValue(groupstr[i]); if (lt != null) { lt.Selected = true; } } } } else { errmsg.InnerHtml = ds.Tables["返回值单条"].Rows[0]["提示文本"].ToString(); } } else { errmsg.InnerHtml = re_dsi[1].ToString(); } } } }
protected void Page_Load(object sender, EventArgs e) { /* * 数据要求: * 每个菜单项必须有个唯一ID,ID中不能含有“[”或“]”或“|”或其他正则表达式特殊字符 * 尽量不要超过五级,第五级显示上不能再补空位了,会不好看。 * 每个菜单路径不能互相重复,最好也不要有包含关系。 */ //读取后台菜单 DataTable dtmenu = new DataTable(); try { dtmenu.ReadXml(Server.MapPath("/xml/auth_menu_b.xml")); } catch { return; } if (UserSession.是否超管 == "0") { //读取有效权限枚举 DataSet dsenum = new DataSet(); try { dsenum.ReadXml(Server.MapPath("/xml/auth_enum_number_ANused.xml")); } catch { return; } //获取用户具备权限的枚举(后台菜单权限) string in_str = "("; Dictionary <string, string> user_have_enum = AuthComm.GetEnumFormUnumber(UserSession.最终权值_后台菜单权限); foreach (KeyValuePair <string, string> kv in user_have_enum) { in_str = in_str + "'" + kv.Value + "',"; } in_str = in_str + "'大补丸')"; //根据权限枚举,找到要剔除的菜单id(生成字符串del_str) 和 不剔除的菜单 (生成字符串no_del_str) DataRow[] dr_need_del = dsenum.Tables["Unumber1"].Select("ANBaseNumber not in " + in_str); del_str = "("; foreach (DataRow dr in dr_need_del) { del_str = del_str + dr["ANextendID"].ToString() + ","; } del_str = del_str + "-1)"; DataRow[] dr_no_del = dtmenu.Select("SortID not in " + del_str + " and m_show='不隐藏'"); string no_del_str = "("; foreach (DataRow dr in dr_no_del) { DataRow[] dr_tttt = dtmenu.Select("SortParentPath like '%," + dr["SortID"].ToString() + ",%'"); if (dr_tttt.Length == 0) { no_del_str = no_del_str + dr["SortID"].ToString() + ","; } } no_del_str = no_del_str + "-1)"; //有可能要删除的全部上级菜单id集合(tempDic_parentsID_maybe_del) DataRow[] dr_may_beneed_del_p = dtmenu.Select("SortID in " + del_str); string parentsID_maybe_del = ""; foreach (DataRow dr in dr_may_beneed_del_p) { parentsID_maybe_del = parentsID_maybe_del + dr["SortParentPath"].ToString(); } Dictionary <string, string> tempDic_parentsID_maybe_del = new Dictionary <string, string>(); string[] tt = parentsID_maybe_del.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < tt.Length; i++) { tempDic_parentsID_maybe_del[tt[i]] = ""; } //没有被剔除的菜单所隶属的全部上级菜单id集合,都是绝对不能删除的(tt2)。 DataRow[] dr_never_del_p = dtmenu.Select("SortID in " + no_del_str); string parentsID_never_del = ""; foreach (DataRow dr in dr_never_del_p) { parentsID_never_del = parentsID_never_del + dr["SortParentPath"].ToString(); } string[] tt2 = parentsID_never_del.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); //在有可能要剔除的菜单中去掉绝对不能被剔除的,就是一定要被剔除的。 for (int i = 0; i < tt2.Length; i++) { tempDic_parentsID_maybe_del.Remove(tt2[i]); } //生成一定要被剔除的select条件字符串(del_str_parents)(此时的tempDic_parentsID_maybe_del已经变成了一定要被剔除的) del_str_parents = "("; foreach (KeyValuePair <string, string> kv in tempDic_parentsID_maybe_del) { del_str_parents = del_str_parents + kv.Key + ","; } del_str_parents = del_str_parents + "-1)"; } else { del_str = "(-1)"; del_str_parents = "(-1)"; } //处理菜单 menuallhtml = ""; DataRow[] dr_rootnotes = dtmenu.Select("SortParentID=0 and m_show='不隐藏' and SortID not in " + del_str + " and SortID not in " + del_str_parents, "SortOrder asc"); LoadDataToTreeView(dtmenu, dr_rootnotes, true, "0", "首页"); //依据追溯数据替换激活和打开标记 menuallhtml = Regex.Replace(menuallhtml, @"\[(active)\[(" + s_daohang_ID + @")\]\]", "active"); menuallhtml = Regex.Replace(menuallhtml, @"\[(open)\[(" + s_daohang_ID + @")\]\]", " open"); menuallhtml = Regex.Replace(menuallhtml, @"\[(active|open)\[(.*?)\]\]", ""); menuUL.InnerHtml = menuallhtml; //改写导航文字 ArrayList al = new ArrayList(); al.AddRange(s_daohang_name.Split('|')); RaiseEvent_OnNeedLoadData(al, ""); }