http://blog.csdn.net/luchuanbo/archive/2009/04/24/4107849.aspx
接口:System.Web.UI.ICallbackEventHandler
函数原型:
public string GetCallbackEventReference (
Control control,
string argument,
string clientCallback,
string context
)
第一个参数指定了服务器端将要处理回调的目标对象,即处理客户端回调的服务器端控件。该控件必须实现 ICallbackEventHandler 接口并提供 RaiseCallbackEvent 方法。 如果传入的是this,则表示页面本身。也可以传入任何实现了ICallbackEventHandler的页面控件(page control)的引用。
第二个参数是一个JavaScript常量表达式,表示页面传给服务器的输入数据。如将一个下拉列表当前选中元素的值传入"document.getElementById['cboEmployees'].value":。
第三个参数是一个用户定义在<script>块中的JavaScript回调(callback)函数名。回调(callback)执行后,此函数最终负责页面的更新。
最后两个可选参数可用来指定错误处理函数(error handler)和上下文对象(context object)。
GetCallbackEventReference函数将产生如下的脚本调用:
WebForm_DoCallback(pageID, input, UpdateEmployeeViewHandler, null, null);
此函数的代码会自动下载到客户端并通过<script>标签添加到页面响应(page's response)中。WebForm_DoCallback 使用XmlHttpRequest DOM对象(XmlHttpRequest DOM object)回调(call back)当前页面的URL。与此同时,它会添加一些额外的隐藏域(hidden field)以便服务器区分更简单的轻量级回调(callback)请求和一般回传(postback)请求。
处理请求时,ASP.NET运行时(runtime)标识出调用的目标对象(传给GetCallbackEventReference的第一个参数),确认它实现了ICallbackEventHandler接口后调用RaiseCallbackEvent方法:
void RaiseCallbackEvent (
string eventArgument
)
eventArgument一般即是通过GetCallbackEventReference指定的页面传递到服务器端的输入数据,即参数2,RaiseCallbackEvent处理完毕,即通过调用public string GetCallbackResult()将处理结果返回给调用控件,交由客户端执行GetCallbackEventReference指定的客户端脚本clientCallback,由其完成客户端刷新。
不错的例子: