ASP.NET服务器控件封装-【事件】-1.2【数据回发】
上节概述: 上节中主要总结了事件处理的机制、控件事件回发、服务端回发事件的捕获及 处理和异步回调等几个方面。 接下来本文将为大家描述“数据回发”的相关细节。 1.IPostBackDataHandler接口 我们封装的控件如果要实现数据回发功能的话,就必须继承 IPostBackDataHandler接口并实现接口方法。该接口方法只有两个: 代码
其中,当客户端触发回发事件时,控件首先处理LoadPostData()方法将页面两 次新旧值进行对比分析,返回true或false。如果新旧值不等返回true,相等则返 回false。当然返回true或false是用控件开发人员自己决定的。但LoadPostData ()方法返回的 true和false是与后文有直接关系的——返回true时,ASP.NET框架 将自动调用RaisePostDataChangeEvent()方法进行必要事件处理;返回false则不 会调用RaisePostDataChangeEvent()方法。 上文中提到了控件的新旧值,那么旧值存储在哪里?新值又怎样的被传入呢? 分析下LoadPostData()方法的两个参数,其中第一个是 String类型的,第二个是 NameValueCollection类型的;可知第二个参数是一个集合类型的参数,所以上文 提到的新值或者旧值很有可能包含在其中。 为了检验我们的猜疑,下面还是以一个实例来探讨下。 (1).新建一个服务器控件开发工程(命名为PostDataControl)和一个测试项 目。 (如果有不清楚的请参照上节——ASP.NET服务器控件封装-【事件】-1.1【事 件回发,异步回调】)。 其中包含了一个默认的Text属性和Render()方法,还有IPostBackDataHandler 接口的两个空方法体。 (2).上图中我们可以看到Text属性的get方法中使用了ViewState对象,该对象 是Control基类中的一个属性,用来管理控件的视图状态的(后面的文章中将讲解 视图相关处理),而前面说过,数据回发是在视图状态基础之上实现的,该处就可 以说明这一点。 (3).值改变才能触发相关事件的控件,大家很容易就想到TextBox,这里也不 例外,在Render()方法中输入一下代码: 代码
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |