using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.OleDb; public partial class admin_menu : MyWeb.web_uc, MyWeb.config.IMenu { string PageUrl = ""; //目前後台的路徑 string Power = ""; //帳號權限 bool isDesigner = false; List nItem = new List(); int setNav = 0; DataTable menuDt = new DataTable(); public void Data(DataTable dt) { menuDt = dt; } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { MyWeb.admin admin = new MyWeb.admin(); if (admin.isLoign() && HttpContext.Current.Request.RawUrl.ToLower().IndexOf("admin/index.aspx") == -1) { Power = admin.info.power; if (Left(Power, 1) == ",") { Power = Right(Power, Power.Length - 1); } if (Right(Power, 1) == ",") { Power = Left(Power, Power.Length - 1); } string[] UrlTmp = Request.Url.AbsolutePath.ToLower().Split('/'); PageUrl = UrlTmp[UrlTmp.Length - 2] + "/" + UrlTmp[UrlTmp.Length - 1]; if (admin.info.u_id == "Designer" && admin.info.group == "EZ") { isDesigner = true; } Repeater1.DataSource = MenuRows(); Repeater1.DataBind(); ((MyWeb.config.MenuNav)Page.Master.FindControl("nav")).InitNav(nItem); } } } protected DataTable MenuRows(int root=0) { DataTable dt = new DataTable(); MyWeb.sql sql = new MyWeb.sql(); OleDbConnection sqlConn = sql.conn(db, p_name); try { sqlConn.Open(); OleDbCommand sqlCmd = new OleDbCommand("", sqlConn); if (!isDesigner) { //非設計師模式檢查權限 if (!isStrNull(Power)) { sqlCmd.CommandText = "SELECT * FROM [item] Where root=? and num in (" + Power + ") order by range"; sqlCmd.Parameters.Add(new OleDbParameter("root", root)); dt = sql.dataTable(sqlCmd); } } else { sqlCmd.CommandText = "SELECT * FROM [item] Where root=? order by range"; sqlCmd.Parameters.Add(new OleDbParameter("root", root)); dt = sql.dataTable(sqlCmd); } } catch (Exception ex) { //Response.Write(ex.Message); } finally { sqlConn.Close(); sqlConn.Dispose(); } return dt; } protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { DataRowView row = (DataRowView)e.Item.DataItem; HiddenField1.Value = ValString(row["num"]); rtmp.Value = ValString(row["title"]); if (menuDt.Rows.Count > 0) { DataTable dt = menuDt.Copy(); for (int i = dt.Rows.Count-1; i >=0; i--) { if (dt.Rows[i]["root"].ToString() != HiddenField1.Value) { dt.Rows.Remove(dt.Rows[i]); } } if (dt.Rows.Count > 0) { Repeater Repeater2 = (Repeater)e.Item.FindControl("Repeater2"); Repeater2.DataSource = dt; Repeater2.DataBind(); dt.Dispose(); } } } protected void Repeater2_ItemDataBound(object sender, RepeaterItemEventArgs e) { DataRowView row = (DataRowView)e.Item.DataItem; if (ValString(row["url"]).ToLower().IndexOf(PageUrl) > -1) { setNav++; } else if (ValString(row["other_url"]).ToLower().IndexOf(PageUrl) > -1) { setNav++; } if (setNav==1) { setNav++; ExpandMenu.Text = ""; nItem.Add(rtmp.Value); if ((PageUrl.IndexOf("reg.aspx") > -1 || PageUrl.IndexOf("edit.aspx") > -1) && !isStrNull(Request["num"])) { nItem.Add(ValString(row["title"]).Replace("登錄", "修改").Replace("查詢", "修改").Replace("新增", "修改")); } else { nItem.Add(ValString(row["title"])); } } } }