ASP.NET服务器控件封装-【事件】-1.2【数据回发】
t;); 12 output.Write(outString.ToString()); 13 } 主要输出一个文本框,另外我们定义了当焦点从该文本框离开时触发回发事件 的事件函数Onblur()。还有一点,我将该文本框的Text值通过HtmlEncode()方法 处理生成不包含Html标签的字符串后呈现个客户端。 (4).接下来给该文本框定义一个TextChanged委托和OnTextChanged方法,用来 关联用户OnTextChanged事件函数。并且将OnTextChanged事件设置为该控件类 PostDataControl的默认属性: 代码
(5).重新生成解决方案,从工具箱中拖拽一个PostDataControl控件,到测试 项目中的Default.aspx页面内form下的div标签对中。回到控件工程在 IPostBackDataHandler接口的两个方法中都打下断点,运行程序。 (6).将焦点出入PostDataControl1文本框输入“123”,然后将焦点移除,程序 会在LoadPostData方法内的断点处停下,将鼠标移到该方法的两个参数上,查看 两个参数包含的值。 可见,postDataKey的值就是该控件的服务端ID,而postCollection中则包含 了视图状态的所有数据(当然,该控件的ID也在其中),如下图。 (7).现在在LoadPostData()方法中输入下面代码,检验那个是旧值那个是新值 。
全工程重新生成,从工具箱中重新拖拽一个该控件替换掉原有的该控件。运行 程序检验后可知Text中保存的是原有值,而postCollection集合中的值才是新值 。 其实不难想象,Text中的值是在页面初始进入时视图状态中的值,这时该值还 为空,当我们在控件中输入“123”后移出焦点,程序执行到 LoadPostData()方 法时Text还为空,而新的值则通过postCollection带入到LoadPostData()方法, 当程序处理完逻辑后会将新的数据覆盖到视图状态字段中,这时Text的值就是 “123”了,如果再将该文本框的值改为“456”后移出焦点,之时在 LoadPostData中Text的值就是“123”了。 (8).接下来实现IPostBackDataHandler接口的两个方法,代码如下: 代码
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |