快速业务通道

ASP.NET服务器控件封装-【事件】-1.2【数据回发】

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-03
t;);
12               output.Write(outString.ToString());
13         }

主要输出一个文本框,另外我们定义了当焦点从该文本框离开时触发回发事件 的事件函数Onblur()。还有一点,我将该文本框的Text值通过HtmlEncode()方法 处理生成不包含Html标签的字符串后呈现个客户端。

(4).接下来给该文本框定义一个TextChanged委托和OnTextChanged方法,用来 关联用户OnTextChanged事件函数。并且将OnTextChanged事件设置为该控件类 PostDataControl的默认属性:

代码

1 [DefaultProperty("Text")]
2 [DefaultEvent ("TextChanged")]
3     [ToolboxData("<{0}:PostDataControl  runat=server></{0}:PostDataControl>")]
4     public  class PostDataControl : Control,IPostBackDataHandler
5 {
6  ...
7         public event EventHandler  TextChanged;
8         protected virtual void  OnTextChanged(EventArgs e)
9         {
10              if (TextChanged != null)
11              {
12                 TextChanged(this, e);
13              }
14     }
15 ...
16 }

(5).重新生成解决方案,从工具箱中拖拽一个PostDataControl控件,到测试 项目中的Default.aspx页面内form下的div标签对中。回到控件工程在 IPostBackDataHandler接口的两个方法中都打下断点,运行程序。

(6).将焦点出入PostDataControl1文本框输入“123”,然后将焦点移除,程序 会在LoadPostData方法内的断点处停下,将鼠标移到该方法的两个参数上,查看 两个参数包含的值。

可见,postDataKey的值就是该控件的服务端ID,而postCollection中则包含 了视图状态的所有数据(当然,该控件的ID也在其中),如下图。

(7).现在在LoadPostData()方法中输入下面代码,检验那个是旧值那个是新值 。

1 string strValue1 = Text;
2  string strValue2 =  postCollection[this.UniqueID];

全工程重新生成,从工具箱中重新拖拽一个该控件替换掉原有的该控件。运行 程序检验后可知Text中保存的是原有值,而postCollection集合中的值才是新值 。

其实不难想象,Text中的值是在页面初始进入时视图状态中的值,这时该值还 为空,当我们在控件中输入“123”后移出焦点,程序执行到 LoadPostData()方 法时Text还为空,而新的值则通过postCollection带入到LoadPostData()方法, 当程序处理完逻辑后会将新的数据覆盖到视图状态字段中,这时Text的值就是 “123”了,如果再将该文本框的值改为“456”后移出焦点,之时在 LoadPostData中Text的值就是“123”了。

(8).接下来实现IPostBackDataHandler接口的两个方法,代码如下:

代码

1              public bool LoadPostData(string  postDataKey, System.Collections.Specialized.NameValueCollection  postCollection)
2         {
3              string strOldValue = Text;
4             string  strNewValue = postCollection[this.UniqueID];
5              if (strOldValue != null && (strNewValue != null  && !strOldValue.Equals(strNewValue)))
6              {
7                 Text =  strNewValue;
8                 return true;
9              }
10   

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号