且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

扩展Label控件(1) - 实现回发(Postback)功能

更新时间:2022-09-13 12:37:25

Label控件既强大又好用。为了让它更强大、更好用,我们来写一个继承自Label的控件。
[源码下载]


扩展Label控件(1) - 实现回发(Postback)功能


作者:webabcd


介绍
扩展Label控件:
通过注册HiddenField控件,使Label控件支持回发(Postback)功能

使用方法(设置属性):
EnablePostback - 是否启用Label控件的回发(Postback)
HiddenFieldPostfix - 使Label支持回发(Postback)的隐藏控件的后缀名


关键代码
ScriptLibrary.js
//---------------------------- 
// http://webabcd.cnblogs.com/ 
//---------------------------- 

function yy_sl_copyTextToHiddenField(source, destination) 

/// <summary>将Label控件的的值赋给隐藏控件</summary> 

        document.getElementById(destination).value = document.getElementById(source).innerHTML; 
}
 
SmartLabel.cs
扩展Label控件(1) - 实现回发(Postback)功能using System; 
扩展Label控件(1) - 实现回发(Postback)功能using System.Collections.Generic; 
扩展Label控件(1) - 实现回发(Postback)功能using System.Text; 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能using System.Web.UI.WebControls; 
扩展Label控件(1) - 实现回发(Postback)功能using System.Web.UI; 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能[assembly: System.Web.UI.WebResource("YYControls.SmartLabel.Resources.ScriptLibrary.js""text/javascript")] 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能namespace YYControls 
扩展Label控件(1) - 实现回发(Postback)功能
扩展Label控件(1) - 实现回发(Postback)功能        /// <summary> 
扩展Label控件(1) - 实现回发(Postback)功能        /// SmartLabel类,继承自DropDownList 
扩展Label控件(1) - 实现回发(Postback)功能        /// </summary> 
扩展Label控件(1) - 实现回发(Postback)功能        [ToolboxData(@"<{0}:SmartLabel runat='server'></{0}:SmartLabel>")] 
扩展Label控件(1) - 实现回发(Postback)功能        [System.Drawing.ToolboxBitmap(typeof(YYControls.Resources.Icon), "SmartLabel.bmp")] 
扩展Label控件(1) - 实现回发(Postback)功能        public partial class SmartLabel : Label 
扩展Label控件(1) - 实现回发(Postback)功能        { 
扩展Label控件(1) - 实现回发(Postback)功能                /// <summary> 
扩展Label控件(1) - 实现回发(Postback)功能                /// 构造函数 
扩展Label控件(1) - 实现回发(Postback)功能                /// </summary> 
扩展Label控件(1) - 实现回发(Postback)功能                public SmartLabel() 
扩展Label控件(1) - 实现回发(Postback)功能                { 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能                } 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能                /// <summary> 
扩展Label控件(1) - 实现回发(Postback)功能                /// OnPreRender 
扩展Label控件(1) - 实现回发(Postback)功能                /// </summary> 
扩展Label控件(1) - 实现回发(Postback)功能                /// <param name="e">e</param> 
扩展Label控件(1) - 实现回发(Postback)功能                protected override void OnPreRender(EventArgs e) 
扩展Label控件(1) - 实现回发(Postback)功能                { 
扩展Label控件(1) - 实现回发(Postback)功能                        base.OnPreRender(e); 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能                        // 实现Label控件的回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能                        ImplementPostback(); 
扩展Label控件(1) - 实现回发(Postback)功能                } 
扩展Label控件(1) - 实现回发(Postback)功能        } 
扩展Label控件(1) - 实现回发(Postback)功能}
 
Property.cs
扩展Label控件(1) - 实现回发(Postback)功能using System; 
扩展Label控件(1) - 实现回发(Postback)功能using System.Collections.Generic; 
扩展Label控件(1) - 实现回发(Postback)功能using System.Text; 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能using System.ComponentModel; 
扩展Label控件(1) - 实现回发(Postback)功能using System.Web.UI; 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能namespace YYControls 
扩展Label控件(1) - 实现回发(Postback)功能
扩展Label控件(1) - 实现回发(Postback)功能        /// <summary> 
扩展Label控件(1) - 实现回发(Postback)功能        /// SmartLabel类的属性部分 
扩展Label控件(1) - 实现回发(Postback)功能        /// </summary> 
扩展Label控件(1) - 实现回发(Postback)功能        public partial class SmartLabel 
扩展Label控件(1) - 实现回发(Postback)功能        { 
扩展Label控件(1) - 实现回发(Postback)功能                /// <summary> 
扩展Label控件(1) - 实现回发(Postback)功能                /// 使Label支持回发(Postback)的隐藏控件的后缀名 
扩展Label控件(1) - 实现回发(Postback)功能                /// </summary> 
扩展Label控件(1) - 实现回发(Postback)功能                [ 
扩展Label控件(1) - 实现回发(Postback)功能                Browsable(true), 
扩展Label控件(1) - 实现回发(Postback)功能                Description("使Label支持回发(Postback)的隐藏控件的后缀名"), 
扩展Label控件(1) - 实现回发(Postback)功能                Category("扩展"), 
扩展Label控件(1) - 实现回发(Postback)功能                DefaultValue("EnablePostback"
扩展Label控件(1) - 实现回发(Postback)功能                ] 
扩展Label控件(1) - 实现回发(Postback)功能                public virtual string HiddenFieldPostfix 
扩展Label控件(1) - 实现回发(Postback)功能                { 
扩展Label控件(1) - 实现回发(Postback)功能                        get 
扩展Label控件(1) - 实现回发(Postback)功能                        { 
扩展Label控件(1) - 实现回发(Postback)功能                                string s = (string)ViewState["HiddenFieldPostfix"]; 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能                                return (s == null) ? "EnablePostback" : s; 
扩展Label控件(1) - 实现回发(Postback)功能                        } 
扩展Label控件(1) - 实现回发(Postback)功能                        set 
扩展Label控件(1) - 实现回发(Postback)功能                        { 
扩展Label控件(1) - 实现回发(Postback)功能                                ViewState["HiddenFieldPostfix"] = value; 
扩展Label控件(1) - 实现回发(Postback)功能                        } 
扩展Label控件(1) - 实现回发(Postback)功能                } 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能                /// <summary> 
扩展Label控件(1) - 实现回发(Postback)功能                /// 是否启用Label控件的回发(Postback) 
扩展Label控件(1) - 实现回发(Postback)功能                /// </summary> 
扩展Label控件(1) - 实现回发(Postback)功能                [ 
扩展Label控件(1) - 实现回发(Postback)功能                Browsable(true), 
扩展Label控件(1) - 实现回发(Postback)功能                Description("是否启用Label控件的回发(Postback)"), 
扩展Label控件(1) - 实现回发(Postback)功能                Category("扩展"), 
扩展Label控件(1) - 实现回发(Postback)功能                DefaultValue(false
扩展Label控件(1) - 实现回发(Postback)功能                ] 
扩展Label控件(1) - 实现回发(Postback)功能                public virtual bool EnablePostback 
扩展Label控件(1) - 实现回发(Postback)功能                { 
扩展Label控件(1) - 实现回发(Postback)功能                        get 
扩展Label控件(1) - 实现回发(Postback)功能                        { 
扩展Label控件(1) - 实现回发(Postback)功能                                bool? b = (bool?)ViewState["EnablePostback"]; 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能                                return (b == null) ? false : (bool)b; 
扩展Label控件(1) - 实现回发(Postback)功能                        } 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能                        set 
扩展Label控件(1) - 实现回发(Postback)功能                        { 
扩展Label控件(1) - 实现回发(Postback)功能                                ViewState["EnablePostback"] = value; 
扩展Label控件(1) - 实现回发(Postback)功能                        } 
扩展Label控件(1) - 实现回发(Postback)功能                } 
扩展Label控件(1) - 实现回发(Postback)功能        } 
扩展Label控件(1) - 实现回发(Postback)功能}
 
EnablePostback.cs
扩展Label控件(1) - 实现回发(Postback)功能using System; 
扩展Label控件(1) - 实现回发(Postback)功能using System.Collections.Generic; 
扩展Label控件(1) - 实现回发(Postback)功能using System.Text; 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能using System.Data; 
扩展Label控件(1) - 实现回发(Postback)功能using System.Web.UI.WebControls; 
扩展Label控件(1) - 实现回发(Postback)功能using System.Web.UI; 
扩展Label控件(1) - 实现回发(Postback)功能using System.Web; 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能namespace YYControls 
扩展Label控件(1) - 实现回发(Postback)功能
扩展Label控件(1) - 实现回发(Postback)功能        /// <summary> 
扩展Label控件(1) - 实现回发(Postback)功能        /// SmartLabel类的属性部分 
扩展Label控件(1) - 实现回发(Postback)功能        /// </summary> 
扩展Label控件(1) - 实现回发(Postback)功能        public partial class SmartLabel 
扩展Label控件(1) - 实现回发(Postback)功能        { 
扩展Label控件(1) - 实现回发(Postback)功能                /// <summary> 
扩展Label控件(1) - 实现回发(Postback)功能                /// 实现Label控件的回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能                /// </summary> 
扩展Label控件(1) - 实现回发(Postback)功能                private void ImplementPostback() 
扩展Label控件(1) - 实现回发(Postback)功能                { 
扩展Label控件(1) - 实现回发(Postback)功能                        if (this.EnablePostback) 
扩展Label控件(1) - 实现回发(Postback)功能                        { 
扩展Label控件(1) - 实现回发(Postback)功能                                // 使Label支持回发(Postback)的隐藏控件的ID 
扩展Label控件(1) - 实现回发(Postback)功能                                string hiddenFieldId = string.Concat(this.ClientID, "_", HiddenFieldPostfix); 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能                                // 注册隐藏控件 
扩展Label控件(1) - 实现回发(Postback)功能                                Page.ClientScript.RegisterHiddenField(hiddenFieldId, ""); 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能                                // 注册客户端脚本 
扩展Label控件(1) - 实现回发(Postback)功能                                this.Page.ClientScript.RegisterClientScriptResource(this.GetType(), 
扩展Label控件(1) - 实现回发(Postback)功能                                        "YYControls.SmartLabel.Resources.ScriptLibrary.js"); 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能                                // 表单提交前将Label控件的的值赋给隐藏控件 
扩展Label控件(1) - 实现回发(Postback)功能                                this.Page.ClientScript.RegisterOnSubmitStatement(this.GetType(), 
扩展Label控件(1) - 实现回发(Postback)功能                                        string.Format("yy_sl_enablePostback_{0}"
扩展Label控件(1) - 实现回发(Postback)功能                                                this.ClientID), 
扩展Label控件(1) - 实现回发(Postback)功能                                        string.Format("yy_sl_copyTextToHiddenField('{0}', '{1}')"
扩展Label控件(1) - 实现回发(Postback)功能                                                this.ClientID, 
扩展Label控件(1) - 实现回发(Postback)功能                                                hiddenFieldId)); 
扩展Label控件(1) - 实现回发(Postback)功能                        } 
扩展Label控件(1) - 实现回发(Postback)功能                } 
扩展Label控件(1) - 实现回发(Postback)功能 
扩展Label控件(1) - 实现回发(Postback)功能                /// <summary> 
扩展Label控件(1) - 实现回发(Postback)功能                /// 获取或设置 YYControls.SmartLabel 控件的文本内容 
扩展Label控件(1) - 实现回发(Postback)功能                /// </summary> 
扩展Label控件(1) - 实现回发(Postback)功能                public override string Text 
扩展Label控件(1) - 实现回发(Postback)功能                { 
扩展Label控件(1) - 实现回发(Postback)功能                        get 
扩展Label控件(1) - 实现回发(Postback)功能                        { 
扩展Label控件(1) - 实现回发(Postback)功能                                try 
扩展Label控件(1) - 实现回发(Postback)功能                                { 
扩展Label控件(1) - 实现回发(Postback)功能                                        if (this.EnablePostback && !string.IsNullOrEmpty(HttpContext.Current.Request[string.Concat(this.ClientID, "_", HiddenFieldPostfix)])) 
扩展Label控件(1) - 实现回发(Postback)功能                                        { 
扩展Label控件(1) - 实现回发(Postback)功能                                                // 隐藏控件的值 
扩展Label控件(1) - 实现回发(Postback)功能                                                return HttpContext.Current.Request[string.Concat(this.ClientID, "_", HiddenFieldPostfix)]; 
扩展Label控件(1) - 实现回发(Postback)功能                                        } 
扩展Label控件(1) - 实现回发(Postback)功能                                        else 
扩展Label控件(1) - 实现回发(Postback)功能                                        { 
扩展Label控件(1) - 实现回发(Postback)功能                                                return base.Text; 
扩展Label控件(1) - 实现回发(Postback)功能                                        } 
扩展Label控件(1) - 实现回发(Postback)功能                                } 
扩展Label控件(1) - 实现回发(Postback)功能                                catch 
扩展Label控件(1) - 实现回发(Postback)功能                                { 
扩展Label控件(1) - 实现回发(Postback)功能                                        return base.Text; 
扩展Label控件(1) - 实现回发(Postback)功能                                } 
扩展Label控件(1) - 实现回发(Postback)功能                        } 
扩展Label控件(1) - 实现回发(Postback)功能                        set 
扩展Label控件(1) - 实现回发(Postback)功能                        { 
扩展Label控件(1) - 实现回发(Postback)功能                                try 
扩展Label控件(1) - 实现回发(Postback)功能                                { 
扩展Label控件(1) - 实现回发(Postback)功能                                        if (this.EnablePostback && !string.IsNullOrEmpty(HttpContext.Current.Request[string.Concat(this.ClientID, "_", HiddenFieldPostfix)])) 
扩展Label控件(1) - 实现回发(Postback)功能                                        { 
扩展Label控件(1) - 实现回发(Postback)功能                                                // 隐藏控件的值 
扩展Label控件(1) - 实现回发(Postback)功能                                                base.Text = HttpContext.Current.Request[string.Concat(this.ClientID, "_", HiddenFieldPostfix)]; 
扩展Label控件(1) - 实现回发(Postback)功能                                        } 
扩展Label控件(1) - 实现回发(Postback)功能                                        else 
扩展Label控件(1) - 实现回发(Postback)功能                                        { 
扩展Label控件(1) - 实现回发(Postback)功能                                                base.Text = value; 
扩展Label控件(1) - 实现回发(Postback)功能                                        } 
扩展Label控件(1) - 实现回发(Postback)功能                                } 
扩展Label控件(1) - 实现回发(Postback)功能                                catch 
扩展Label控件(1) - 实现回发(Postback)功能                                { 
扩展Label控件(1) - 实现回发(Postback)功能                                        base.Text = value; 
扩展Label控件(1) - 实现回发(Postback)功能                                } 
扩展Label控件(1) - 实现回发(Postback)功能                        } 
扩展Label控件(1) - 实现回发(Postback)功能                } 
扩展Label控件(1) - 实现回发(Postback)功能        } 
扩展Label控件(1) - 实现回发(Postback)功能}
 

OK
[源码下载]



     本文转自webabcd 51CTO博客,原文链接:http://blog.51cto.com/webabcd/345424,如需转载请自行联系原作者