Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)归海一刀published in(发表于) 2014/1/30 1:10:31 扩展Label控件(1),-,实现回发(Postback)功能_[Asp.Net教程]
扩展Label控件(1) - 实现回发(Postback)功能 [源码下载]
Label控件既强大又好用。为了让它更强大、更好用,我们来写一个继承自Label的控件。介绍扩展Label控件:通过注册HiddenField控件,使Label控件支持回发(Postback)功能使用方法(设置属性):EnablePostback - 是否启用Label控件的回发(Postback)HiddenFieldPostfix - 使Label支持回发(Postback)的隐藏控件的后缀名
关键代码ScriptLibrary.js//----------------------------// http://webabcd.cnblogs.com///----------------------------
function yy_sl_copyTextToHiddenField(source, destination){/// 将Label控件的的值赋给隐藏控件
document.getElementById(destination).value = document.getElementById(source).innerHTML;}SmartLabel.csusing System;using System.Collections.Generic;using System.Text;
using System.Web.UI.WebControls;using System.Web.UI;
[assembly: System.Web.UI.WebResource("YYControls.SmartLabel.Resources.ScriptLibrary.js", "text/javascript")]
namespace YYControls{/**//// /// SmartLabel类,继承自DropDownList/// [ToolboxData(@"<{0}:SmartLabel runat='server'>")][System.Drawing.ToolboxBitmap(typeof(YYControls.Resources.Icon), "SmartLabel.bmp")]public partial class SmartLabel : Label{/**//// /// 构造函数/// public SmartLabel(){
}
/**//// /// OnPreRender/// /// eprotected override void OnPreRender(EventArgs e){base.OnPreRender(e);
// 实现Label控件的回发(Postback)功能ImplementPostback();}}}
Property.csusing System;using System.Collections.Generic;using System.Text;
using System.ComponentModel;using System.Web.UI;
namespace YYControls{/**//// /// SmartLabel类的属性部分/// public partial class SmartLabel{/**//// /// 使Label支持回发(Postback)的隐藏控件的后缀名/// [Browsable(true),Description("使Label支持回发(Postback)的隐藏控件的后缀名"),Category("扩展"),DefaultValue("EnablePostback")]public virtual string HiddenFieldPostfix{get{string s = (string)ViewState["HiddenFieldPostfix"];
return (s == null) ? "EnablePostback" : s;}set{ViewState["HiddenFieldPostfix"] = value;}}
/**//// /// 是否启用Label控件的回发(Postback)/// [Browsable(true),Description("是否启用Label控件的回发(Postback)"),Category("扩展"),DefaultValue(false)]public virtual bool EnablePostback{get{bool? b = (bool?)ViewState["EnablePostback"];
return (b == null) ? false : (bool)b;}
set{ViewState["EnablePostback"] = value;}}}}
EnablePostback.csusing System;using System.Collections.Generic;using System.Text;
using System.Data;using System.Web.UI.WebControls;using System.Web.UI;using System.Web;
namespace YYControls{/**//// /// SmartLabel类的属性部分/// public partial class SmartLabel{/**//// /// 实现Label控件的回发(Postback)功能/// private void ImplementPostback(){if (this.EnablePostback){// 使Label支持回发(Postback)的隐藏控件的IDstring hiddenFieldId = string.Concat(this.ClientID, "_", HiddenFieldPostfix);
// 注册隐藏控件Page.ClientScript.RegisterHiddenField(hiddenFieldId, "");
// 注册客户端脚本this.Page.ClientScript.RegisterClientScriptResource(this.GetType(),"YYControls.SmartLabel.Resources.ScriptLibrary.js");
// 表单提交前将Label控件的的值赋给隐藏控件this.Page.ClientScript.RegisterOnSubmitStatement(this.GetType(),"yy_sl_enablePostback",string.Format("yy_sl_copyTextToHiddenField('{0}', '{1}')",this.ClientID,hiddenFieldId));}}
/**//// /// 获取或设置 YYControls.SmartLabel 控件的文本内容/// public override string Text{get{try{if (this.EnablePostback && !string.IsNullOrEmpty(HttpContext.Current.Request[string.Concat(this.ClientID, "_", HiddenFieldPostfix)])){// 隐藏控件的值return HttpContext.Current.Request[string.Concat(this.ClientID, "_", HiddenFieldPostfix)];}else{return base.Text;}}catch{return base.Text;}}set{try{if (this.EnablePostback && !string.IsNullOrEmpty(HttpContext.Current.Request[string.Concat(this.ClientID, "_", HiddenFieldPostfix)])){// 隐藏控件的值base.Text = HttpContext.Current.Request[string.Concat(this.ClientID, "_", HiddenFieldPostfix)];}else{base.Text = value;}}catch{base.Text = value;}}}}}作者:webabcd 来源:http://www.cnblogs.com/webabcd
赞