⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extendedbutton.cs

📁 动易SiteFactory&#8482 网上商店系统1.0源代码
💻 CS
字号:
namespace PowerEasy.ExtendedControls
{
    using PowerEasy.AccessManage;
    using PowerEasy.Enumerations;
    using System;
    using System.ComponentModel;
    using System.Globalization;
    using System.Text;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    [ToolboxData("<{0}:ExtendedButton ID=\"EBtn\" runat=\"server\"></{0}:ExtendedButton>")]
    public class ExtendedButton : Button
    {
        private bool m_IsChecked;
        private bool m_IsVisible;
        private PowerEasy.Enumerations.OperateCode m_Operatecode;

        protected override void AddAttributesToRender(HtmlTextWriter writer)
        {
            if (this.IsShowTabs)
            {
                if (base.ControlStyleCreated && !base.ControlStyle.IsEmpty)
                {
                    base.ControlStyle.AddAttributesToRender(writer, this);
                }
                if (this.Page != null)
                {
                    this.Page.VerifyRenderingInServerForm(this);
                }
                if (this.UseSubmitBehavior)
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Type, "submit");
                }
                else
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Type, "button");
                }
                PostBackOptions postBackOptions = this.GetPostBackOptions();
                string uniqueID = this.UniqueID;
                if ((uniqueID != null) && ((postBackOptions == null) || (postBackOptions.TargetControl == this)))
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Name, uniqueID);
                }
                writer.AddAttribute(HtmlTextWriterAttribute.Value, base.Text);
                if (this.Page != null)
                {
                    this.Page.ClientScript.RegisterForEventValidation(postBackOptions);
                }
                string str2 = this.UniqueID.Replace("$", "").Replace("_", "");
                bool isEnabled = base.IsEnabled;
                string firstScript = string.Empty;
                if (isEnabled)
                {
                    firstScript = EnsureEndWithSemiColon(this.OnClientClick);
                    if (base.HasAttributes)
                    {
                        string str4 = base.Attributes["onclick"];
                        if (str4 != null)
                        {
                            firstScript = firstScript + EnsureEndWithSemiColon(str4);
                            base.Attributes.Remove("onclick");
                        }
                    }
                    if (this.Page != null)
                    {
                        this.InitJavaScript();
                        string secondScript = str2 + "PostFunction()";
                        if (secondScript != null)
                        {
                            firstScript = MergeScript(firstScript, secondScript);
                        }
                    }
                }
                if (firstScript.Length > 0)
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Onclick, firstScript);
                }
                if (this.Enabled && !isEnabled)
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled");
                }
            }
            else
            {
                base.AddAttributesToRender(writer);
            }
        }

        internal static string EnsureEndWithSemiColon(string value)
        {
            if (value != null)
            {
                int length = value.Length;
                if ((length > 0) && (value[length - 1] != ';'))
                {
                    return (value + ";");
                }
            }
            return value;
        }

        protected void InitJavaScript()
        {
            PostBackOptions postBackOptions = this.GetPostBackOptions();
            string postBackEventReference = this.Page.ClientScript.GetPostBackEventReference(postBackOptions, false);
            string key = this.UniqueID.Replace("$", "").Replace("_", "");
            StringBuilder builder = new StringBuilder();
            builder.Append("<script type=\"text/javascript\">\r\n");
            builder.Append("function " + key + "PostFunction()\r\n");
            builder.Append("{\r\n");
            builder.Append("  if(!" + postBackEventReference + ")\r\n");
            builder.Append("  { \r\n");
            if (string.IsNullOrEmpty(this.CustomValProcessFunction))
            {
                builder.Append("      for (i = 0; i < Page_Validators.length; i++) \r\n");
                builder.Append("      {\r\n");
                builder.Append("          val = Page_Validators[i];\r\n");
                builder.Append("          if (val.isvalid == false) \r\n");
                builder.Append("          {\r\n");
                builder.Append("              var id = val.id;\r\n");
                builder.Append("              var controltovalidate = document.getElementById(val.controltovalidate);\r\n");
                builder.Append("              var tempobj = controltovalidate;\r\n");
                builder.Append("              var tabIndex;\r\n");
                builder.Append("              while (tempobj)\r\n");
                builder.Append("              {\r\n");
                builder.Append("                  if(tempobj.id.indexOf(\"" + this.TabPrefix + "\")>=0)\r\n");
                builder.Append("                  {\r\n");
                builder.Append("                      tabIndex = tempobj.id.substring(" + this.TabPrefix.Length.ToString(CultureInfo.CurrentCulture) + ", tempobj.id.length);\r\n");
                builder.Append("                      break;\r\n");
                builder.Append("                  }\r\n");
                builder.Append("                  else\r\n");
                builder.Append("                  {\r\n");
                builder.Append("                      tempobj = tempobj.parentNode;\r\n");
                builder.Append("                  }\r\n");
                builder.Append("              }\r\n");
                builder.Append("              ShowTabs(tabIndex);\r\n");
                builder.Append("              if (typeof(controltovalidate.focus) != \"undefined\" && controltovalidate.focus != null)\r\n");
                builder.Append("              {\r\n");
                builder.Append("                  controltovalidate.focus();\r\n");
                builder.Append("              }\r\n");
                builder.Append("              break;\r\n");
                builder.Append("            }\r\n");
                builder.Append("       }\r\n");
            }
            else
            {
                builder.Append("     " + this.CustomValProcessFunction + "();\r\n");
            }
            builder.Append("  }\r\n");
            builder.Append("}\r\n");
            builder.Append("</script>\r\n");
            if (!this.Page.ClientScript.IsStartupScriptRegistered(base.GetType(), key))
            {
                this.Page.ClientScript.RegisterStartupScript(base.GetType(), key, builder.ToString());
            }
        }

        internal static string MergeScript(string firstScript, string secondScript)
        {
            if (!string.IsNullOrEmpty(firstScript))
            {
                return (firstScript + secondScript);
            }
            if (secondScript.TrimStart(new char[0]).StartsWith("javascript:", StringComparison.Ordinal))
            {
                return secondScript;
            }
            return ("javascript:" + secondScript);
        }

        protected override void OnInit(EventArgs e)
        {
            bool flag = RolePermissions.AccessCheck(this.m_Operatecode);
            if (this.IsChecked && !flag)
            {
                this.Enabled = false;
            }
            if (this.IsVisible && !flag)
            {
                this.Visible = true;
            }
            base.OnInit(e);
        }

        [Bindable(true), Category("自定义"), DefaultValue(""), Description("执行验证后执行自定义JS函数名称"), Localizable(true)]
        public string CustomValProcessFunction
        {
            get
            {
                string str = (string) this.ViewState["CustomValProcessFunction"];
                if (str != null)
                {
                    return str;
                }
                return "";
            }
            set
            {
                this.ViewState["CustomValProcessFunction"] = value;
            }
        }

        [Localizable(true), Category("自定义"), Description("是否启用检查"), Bindable(true), DefaultValue(false)]
        public bool IsChecked
        {
            get
            {
                return this.m_IsChecked;
            }
            set
            {
                this.m_IsChecked = value;
            }
        }

        [Description("验证时是否标签页跳转"), Localizable(true), DefaultValue(false), Bindable(true), Category("自定义")]
        public bool IsShowTabs
        {
            get
            {
                object obj2 = this.ViewState["IsShowTabs"];
                return ((obj2 != null) && ((bool) obj2));
            }
            set
            {
                this.ViewState["IsShowTabs"] = value;
            }
        }

        [DefaultValue(true), Description("没有权限时是否可见"), Localizable(true), Bindable(true), Category("自定义")]
        public bool IsVisible
        {
            get
            {
                return this.m_IsVisible;
            }
            set
            {
                this.m_IsVisible = value;
            }
        }

        [Bindable(true), Description("操作资源码"), Localizable(true), Category("自定义"), DefaultValue("")]
        public PowerEasy.Enumerations.OperateCode OperateCode
        {
            get
            {
                return this.m_Operatecode;
            }
            set
            {
                this.m_Operatecode = value;
            }
        }

        [Category("自定义"), DefaultValue("Tabs"), Bindable(true), Description("标签页前缀"), Localizable(true)]
        public string TabPrefix
        {
            get
            {
                string str = (string) this.ViewState["TabPrefix"];
                if (str != null)
                {
                    return str;
                }
                return "Tabs";
            }
            set
            {
                this.ViewState["TabPrefix"] = value;
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -