ClientScript的GetCallbackEventReference方法实现局部刷新
范例中asp.net2.0的新特性来实现客户端回调服务器事件来异步无刷新变更DropdownList中的选择列表,相对ajax来说可以不用webservice也可实现局部更新的作用.
获取一个对客户端函数的引用;调用该函数时,将启动一个对服务器端事件的客户端回调。
参数描述
control
处理客户端回调的服务器 Control。该控件必须实现 ICallbackEventHandler 接口并提供 RaiseCallbackEvent 方法。
target(用control.UniqueID获得)
处理客户端回调的服务器 Control 的名称。该控件必须实现 ICallbackEventHandler 接口并提供 RaiseCallbackEvent 方法。
argument(用来传递字符串对象给服务器端,RaiseCallbackEvent 方法中接收参数可获取此值)
从客户端脚本传递给服务器端的一个参数
clientCallback(回调成功后触发该脚本函数,此处用于注册该名称)
一个客户端事件处理程序的名称,该处理程序接收成功的服务器端事件的结果。
context(可以传入一个脚本函数或一个客户端对象,下面将介绍两种不同的表现方式)
启动回调之前在客户端计算的客户端脚本。脚本的结果传回客户端事件处理程序。
clientErrorCallback(回调失败后触发该脚本函数,此处用于注册该名称)
客户端事件处理程序的名称,该处理程序在服务器端事件处理程序出现错误时接收结果。
useAsync
true 表示同步执行回调;false 表示异步执行回调。
重载列表
名称 说明
ClientScriptManager.GetCallbackEventReference (Control, String(argument), String(clientCallback), String(context)) 获取一个对客户端函数的引用;调用该函数时,将启动一个对服务 器端事件的客户端回调。此重载方法的客户端函数包含指定的控件、参数、客户端脚本和上下文。
ClientScriptManager.GetCallbackEventReference (Control, String(argument), String(clientCallback), String(context), Boolean) 获取一个对客户端函数的引用;调用该函数 时,将启动一个对服务器端事件的客户端回调。此重载方法的客户端函数包含指定的控件、参数、客户端脚本、上下文和布尔值。
ClientScriptManager.GetCallbackEventReference (Control, String(argument), String(clientCallback), String(context), String(clientErrorCallback), Boolean) 获取一个对客户端函数的引用;调用该函数时,将启动一个对服务器端事件的客户端回调。此重载方法的客户端函数包含指定的控件、参数、客户端脚本、上下 文、错误处理程序和布尔值。
ClientScriptManager.GetCallbackEventReference (String(target), String(argument), String(clientCallback), String(context), String(clientErrorCallback), Boolean)
大体步聚如下:
1.处理客户端回调的服务器控件继承ICallbackEventHandler接口,实现以下两个方法
//处理客户端发出的参数.
public void RaiseCallbackEvent(String eventArgument) { str = eventArgument) ; }
//处理回发到客户端的结果,客户端在clientCallback端接收
public string GetCallbackResult() { return str }
2.使用page类中的ClientScript成员来管理脚本
使用ClientScriptManager cs = Page.ClientScript类
关联服务器控件以及向客户端注册脚本
String cbReference = cs.GetCallbackEventReference("'" + Page.UniqueID + "'", "arg", "ReceiveServerData", "", "ProcessCallBackError", false);
String callbackScript = "function CallTheServer(arg, context) {" + cbReference2 + "; }";
cs.RegisterClientScriptBlock(this.GetType(), "CallTheServer", callbackScript, true);
3.注册客户端脚本函数
function ReceiveServerData(arg, context){ .......}
function ProcessCallBackError(arg, context){..............}
4.客户端调用脚本
CallTheServer1(arg, context)
callback要获取服务器端的返回结果.须调用方法GetCallbackEventReference.
Default.aspx :
default.aspx.cs :
浙公网安备 33010602011771号