扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:金属边缘 来源:天极开发 2007年11月6日
关键字: Windows
using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebControlLibrary{ [DefaultProperty("Text")] [ToolboxData("<{0}:WebCustomControl runat=server></{0}:WebCustomControl>")] public class WebCustomControl : WebControl, IPostBackDataHandler { // 实现Text属性 [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] public string Text { get { string s = (String)ViewState["Text"]; return ((s == null) ? String.Empty : s); } set { ViewState["Text"] = value; } } //重写控件呈现方法RenderContents protected override void RenderContents(HtmlTextWriter output) { output.AddAttribute(HtmlTextWriterAttribute.Type, "text"); output.AddAttribute(HtmlTextWriterAttribute.Value, Text); output.AddAttribute(HtmlTextWriterAttribute.Name, this.UniqueID); output.RenderBeginTag(HtmlTextWriterTag.Input); output.RenderEndTag(); } //定义事件对象EventTextChanged private static readonly object EventTextChanged = new object(); #region 实现IPostBackDataHandler 成员 bool IPostBackDataHandler.LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection) { //比较初始数据presentValue和回传数据postedValue string postedValue = postCollection[postDataKey]; string presentValue = Text; if (presentValue == null || postedValue != presentValue) { Text = postedValue; return true; } return false; } void IPostBackDataHandler.RaisePostDataChangedEvent() { OnTextChanged(EventArgs.Empty); } #endregion // 实现事件处理程序OnTextChanged private void OnTextChanged(EventArgs eventArgs) { EventHandler textChangedHandler = (EventHandler)Events[EventTextChanged]; if (textChangedHandler != null) { textChangedHandler(this, eventArgs); } } // 为TextChanged实现事件属性结构 public event EventHandler TextChanged { add { Events.AddHandler(EventTextChanged, value); } remove { Events.RemoveHandler(EventTextChanged, value); } } } } |
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register TagPrefix="wcl" Assembly="WebControlLibrary" Namespace="WebControlLibrary" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> void demo1_TextChanged(object sender, EventArgs e) { label1.Text = "您在文本框中输入的是 " + demo1.Text; } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>处理回传数据</title> </head> <body> <form id="form1" runat="server"> <div> <wcl:WebCustomControl ID="demo1" runat="server" OnTextChanged="demo1_TextChanged" /> <asp:Button ID="button1" runat="server" Text="提交" /> <br /> <asp:Label ID="label1" runat="server" Font-Size="small"> </asp:Label> </div> </form> </body> </html> |
图1 页面初始化效果图 图2 页面提交后的效果图 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者