zoukankan      html  css  js  c++  java
  • 动态构建菜单类

    using System;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Text;
    using System.Collections.Generic;
    using System.Collections;

    namespace yd
    {
        /// <summary>
        /// 创建菜单
        /// </summary>
        public class Menu
        {
            /// <summary>
            /// 构造器
            /// </summary>
            /// <param name="tab"></param>
            public Menu(Table tab)
            {
                this._tab = tab;

                //初始化表及其他对象
                this.InitInfo();
            }


            #region 定义变量
            /// <summary>
            /// 页面对象
            /// </summary>
            private Page _page = null;
            /// <summary>
            /// 页面对象
            /// </summary>
            private Page page
            {
                get
                {
                    return (this._page);
                }
            }

            /// <summary>
            /// 菜单存放的表格对象
            /// </summary>
            private Table _tab = null;
            /// <summary>
            /// 菜单存放的表格对象
            /// </summary>
            private Table tab
            {
                get
                {
                    return (this._tab);
                }
            }

            /// <summary>
            /// 当前存储参数数据表
            /// </summary>
            private Hashtable _dt = null;
            /// <summary>
            /// 当前存储参数数据表
            /// </summary>
            private Hashtable dt
            {
                get { return (this._dt); }
                set { this._dt = value; }
            }

            /// <summary>
            /// 是否显示帮助按钮,默认为是
            /// </summary>
            private bool _IsHelp = true;
            /// <summary>
            /// 是否显示帮助按钮
            /// </summary>
            public bool IsHelp
            {
                get { return (this._IsHelp); }
                set { this._IsHelp = value; }
            }

            /// <summary>
            /// 是否显示关闭按钮,默认为否
            /// </summary>
            private bool _IsClose = false;
            /// <summary>
            /// 是否显示关闭按钮
            /// </summary>
            public bool IsClose
            {
                get { return (this._IsClose); }
                set { this._IsClose = value; }
            }


            /// <summary>
            /// 上一个页面的返回地址
            /// </summary>
            private string _ToBackPageUrl = string.Empty;
            /// <summary>
            /// 上一个页面的返回地址
            /// </summary>
            public string ToBackPageUrl
            {
                get
                {
                    if (this._ToBackPageUrl == string.Empty)
                    {
                        try
                        {
                            if (System.Web.HttpContext.Current.Request.UrlReferrer.PathAndQuery != null)
                            {
                                this._ToBackPageUrl = System.Web.HttpContext.Current.Request.UrlReferrer.PathAndQuery;
                            }
                        }
                        catch
                        {
                            this._ToBackPageUrl = "";
                        }
                    }

                    return (this._ToBackPageUrl);
                }
                set { this._ToBackPageUrl = value; }
            }

            /// <summary>
            /// 菜单标题信息
            /// </summary>
            private string _Title = string.Empty;
            /// <summary>
            /// 菜单标题信息
            /// </summary>
            public string Title
            {
                get { return (this._Title); }
                set { this._Title = value; }
            }

            #endregion 结束定义属性

            /// <summary>
            /// 初始化当前对象
            /// </summary>
            private void InitInfo()
            {
                //初始化表格
                this.tab.CssClass = "ydMenuCssParentTable";
                this.tab.Width = Unit.Percentage(100);
                //this.tab.BorderWidth = Unit.Pixel(0);
                this.tab.Height = Unit.Pixel(25);
                this.tab.CellPadding = 0;
                this.tab.CellSpacing = 0;

                //初始化数据表
                this._dt = new Hashtable();
            }


            /// <summary>
            /// 菜单对象
            /// </summary>
            public class MenuItem
            {
                #region 定义属性
                /// <summary>
                /// 当前菜单对象文本值
                /// </summary>
                private string _Text = string.Empty;
                /// <summary>
                /// 当前菜单对象文本值
                /// </summary>
                public string Text
                {
                    get { return (this._Text); }
                    set { this._Text = value; }
                }

                /// <summary>
                /// 当前菜单指向的onclick客户端脚本
                /// </summary>
                private string _OnClickScript = string.Empty;
                /// <summary>
                /// 当前菜单指向的onclick客户端脚本
                /// </summary>
                public string OnClickScript
                {
                    get { return (this._OnClickScript); }
                    set { this._OnClickScript = value; }
                }

                /// <summary>
                /// 菜单指向链接地址
                /// </summary>
                private string _Url = string.Empty;
                /// <summary>
                /// 菜单指向链接地址
                /// </summary>
                public string Url
                {
                    get { return (this._Url); }
                    set { this._Url = value; }
                }

                /// <summary>
                /// 当前菜单对象提示值
                /// </summary>
                private string _ToolTip = string.Empty;
                /// <summary>
                /// 当前菜单对象提示值
                /// </summary>
                public string ToolTip
                {
                    get { return (this._ToolTip); }
                    set { this._ToolTip = value; }
                }


                /// <summary>
                /// 当前菜单是否选中,默认为否
                /// </summary>
                private bool _Checked = false;
                /// <summary>
                /// 当前菜单是否选中,默认为否
                /// </summary>
                public bool Checked
                {
                    get { return (this._Checked); }
                    set { this._Checked = value; }
                }

                /// <summary>
                /// 当前菜单是否不可操作,默认为否
                /// </summary>
                private bool _Disabled = false;
                /// <summary>
                /// 当前菜单是否不可操作,默认为否
                /// </summary>
                public bool Disabled
                {
                    get { return (this._Disabled); }
                    set { this._Disabled = value; }
                }


                /// <summary>
                /// 当前菜单可否显示,默认为是
                /// </summary>
                private bool _Visible = true;
                /// <summary>
                /// 当前菜单可否显示,默认为是
                /// </summary>
                public bool Visible
                {
                    get { return (this._Visible); }
                    set { this._Visible = value; }
                }
                #endregion 定义属性

                /// <summary>
                /// 构造器
                /// </summary>
                public MenuItem()
                {
                    this._Text = Text;
                }

                /// <summary>
                /// 构造器
                /// </summary>
                /// <param name="Text">菜单名称</param>
                public MenuItem(string Text)
                {
                    this._Text = Text;
                }
            }

            /// <summary>
            /// 添加新菜单
            /// </summary>
            /// <param name="Item">菜单对象</param>
            public void Add(yd.Menu.MenuItem Item)
            {
                this.AddAt(this.dt.Count, Item);
            }


            /// <summary>
            /// 添加新菜单
            /// </summary>
            /// <param name="pos">要添加在哪个位置</param>
            /// <param name="Item">菜单对象</param>
            public void AddAt(int pos, yd.Menu.MenuItem Item)
            {
                //添加行
                this.dt.Add(pos, Item);
            }

            /// <summary>
            /// 添加一个空行,以避免顶天情况
            /// </summary>
            private void AddTopRow()
            {
                TableRow r = new TableRow();
                TableCell c = new TableCell();
                c.Height = Unit.Pixel(3);
                r.Controls.Add(c);
                this.tab.Controls.Add(r);
            }

            /// <summary>
            /// 开始加载菜单
            /// </summary>
            /// <returns></returns>
            public bool Load()
            {
                try
                {
                    this.AddTopRow();
                    //添加一个标题行
                    TableRow r = new TableRow();
                    //将行添加到表格中
                    this.tab.Controls.Add(r);

                    r.Controls.Add(this.GetTitleCell());

                    //生成一个新单元格
                    TableCell contentCell = new TableCell();
                    contentCell.HorizontalAlign = HorizontalAlign.Right;
                    r.Controls.Add(contentCell);

                    //Label Label = new Label();
                    //Label.Attributes.Add("style", "filter:shadow(color=#cccccc,direction=120);padding-right:;padding-bottom:3;");
                    ////<div style="filter:shadow(color=#cccccc,direction=120);
                    ////300;padding-right:10;padding-bottom:10">

                    //在上述单元格里面再生成一个新表格,以存放各菜单
                    Table mt = new Table();
                    mt.CssClass = "ydMenuCss";
                    mt.CellPadding = 1;
                    mt.CellSpacing = 0;
                    TableRow mtr = new TableRow();

                    //生成常规按钮
                    this.AddNormalMenu();

                    //添加所记录的所有对象
                    int icount = this.dt.Count;
                    for (int i = 0; i < icount; i++)
                    {
                        mtr.Cells.Add(this.AddTableCell((yd.Menu.MenuItem)this.dt[i]));
                    }

                    //将行添加到新表格中
                    mt.Controls.Add(mtr);
                    contentCell.Controls.Add(mt);

                    return (true);
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }

            /// <summary>
            /// 生成标题行
            /// </summary>
            /// <returns></returns>
            private TableCell GetTitleCell()
            {
                //生成标题栏
                TableCell cTitle = new TableCell();
                cTitle.Wrap = false;
                cTitle.CssClass = "ydMenuCssParentLefttd";
                cTitle.Text = this.Title;

                return (cTitle);
            }

            /// <summary>
            /// 生成常规按钮
            /// </summary>
            private void AddNormalMenu()
            {
                //生成返回按钮
                if (this.ToBackPageUrl != string.Empty && this.ToBackPageUrl.Length > 0)
                {
                    MenuItem backItem = new MenuItem();
                    backItem.Text = "返回";
                    backItem.ToolTip = "点击返回上一个页面";
                    if (this.ToBackPageUrl != string.Empty)
                    {
                        backItem.Url = this.ToBackPageUrl;
                    }
                    else
                    {
                        backItem.Url = "#";
                        backItem.OnClickScript = "history.back();return(false);";
                    }

                    this.Add(backItem);
                }

                //生成关闭按钮
                if (this.IsClose == true)
                {
                    MenuItem closeItem = new MenuItem();
                    closeItem.Text = "关闭";
                    closeItem.ToolTip = "点击关闭本页面";
                    closeItem.Url = this.ToBackPageUrl;
                    closeItem.OnClickScript = "self.close();return(false);";

                    this.Add(closeItem);
                }

                //生成帮助菜单
                if (this.IsHelp == true)
                {
                    System.Web.UI.Page p = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;
                    string s = p.AppRelativeVirtualPath;
                    string pageUrl = p.Server.UrlEncode(s);
                    string helpUrl = p.ResolveUrl("~/hlp/page/myhelp.aspx");

                    MenuItem helpItem = new MenuItem();
                    helpItem.Text = "帮助";
                    helpItem.ToolTip = "点击查看本页面帮助信息";
                    helpItem.OnClickScript = "return(openWindow(600,400,'" + helpUrl + "?mypage=" + pageUrl + "'));";

                    this.Add(helpItem);
                }
            }

            /// <summary>
            /// 添加单元格
            /// </summary>
            /// <param name="Item"></param>
            private TableCell AddTableCell(yd.Menu.MenuItem Item)
            {
                TableCell c = new TableCell();
                c.Wrap = false;

                //生成链接对象
                HyperLink h = new HyperLink();

                h.NavigateUrl = (Item.Url == "" ? "#" : Item.Url);

                //选中效果
                if (Item.Checked == true)
                {
                    h.CssClass = "currentmenu";
                }

                h.ToolTip = Item.ToolTip;

                //如果不可用,则显示效果
                if (Item.Disabled == true)
                {
                    h.Attributes.Add("disabled", "true");
                }

                //执行脚本
                if (Item.OnClickScript != string.Empty && Item.OnClickScript.Length > 0)
                {
                    h.Attributes.Add("onclick", Item.OnClickScript + "return(false);");
                }

                h.Visible = Item.Visible;

                //生成Label对象
                Label lab = new Label();
                lab.Text = Item.Text;
                if (Item.Checked == true)
                {
                    lab.CssClass = "currentmenu";
                }

                h.Controls.Add(lab);
                c.Controls.Add(h);
                return (c);
            }

        }
    }

  • 相关阅读:
    ThinkPHP5.0被攻击,发现漏洞
    ThinkPHP5.0引用PHPExcel插件,在页面中导出数据库数据
    ThinkPHP5.0引入插件
    引入UEditor插件
    Form
    点击链接只跳转到首页/本地正常,上传后,除首页外,其余页面404
    Thinkphp5中嵌套循环
    ARouter转场动画无效,试试下面这种写法
    windows下运行.sh文件
    List集合增删元素时,UnsupportedOperationException报错问题
  • 原文地址:https://www.cnblogs.com/zqmingok/p/1709697.html
Copyright © 2011-2022 走看看