public partial class MMM_bMMM0402 : System.Web.UI.Page, ICallbackEventHandler
{
}
ClientScriptManager..::.GetCallbackEventReference 方法 的參考資料:
Sample:(轉)
注意:此方法在 .NET Framework 2.0 版中是新增的。
获取一个对客户端函数的引用;调用该函数时,将启动一个对服务器端事件的客户端回调。此重载方法的客户端函数包含指定的目标、参数、客户端脚本、上下文、错误处理程序和布尔值。
命名空间:System.Web.UI
程序集:System.Web(在 system.web.dll 中)
public string GetCallbackEventReference ( string target, string argument, string clientCallback, string context, string clientErrorCallback, bool useAsync )
参数
- target
-
处理客户端回调的服务器 Control 的名称。该控件必须实现 ICallbackEventHandler 接口并提供 RaiseCallbackEvent 方法。
- argument
-
从客户端脚本传递给服务器端的一个参数
RaiseCallbackEvent 方法。
- clientCallback
-
一个客户端事件处理程序的名称,该处理程序接收成功的服务器端事件的结果。
- context
-
启动回调之前在客户端计算的客户端脚本。脚本的结果传回客户端事件处理程序。
- clientErrorCallback
-
客户端事件处理程序的名称,该处理程序在服务器端事件处理程序出现错误时接收结果。
- useAsync
-
true 表示同步执行回调;false 表示异步执行回调。
返回值
调用客户端回调的客户端函数的名称。GetCallbackEventReferenc
另外,GetCallbackEventReference 方法的此重载需要一个 useAsync 和一个 clientErrorCallback 参数。useAsync 参数允许您通过将该值设置为 true 来异步执行客户端回调。此方法的重载版本,该版本不需要 useAsync 参数设置为默认值 false。clientErrorCallback 参数允许您定义一个客户端函数的名称,如果服务器端处理程序(RaiseCallbackEvent 方法)返回错误则调用该客户端函数。此方法的不需要 clientErrorCallback 参数的重载版本将该值设置为空。
有关此方法的更多信息,请参见关于此重载 GetCallbackEventReferenc
下面的代码示例演示如何在递增整数的客户端回调方案中使用 GetCallbackEventReference 方法的两种重载。
两种回调机制显示;它们的区别在于 context 参数的使用。ReceiveServerData1 客户端回调函数是使用 context 参数提供的。相反,ReceiveServerData2 客户端回调函数是在页面的 <script> 块中定义的。RaiseCallbackEvent 方法是一个服务器端处理程序,它递增传递给它的值,而 GetCallbackResult 方法将增加的值作为字符串返回。如果 RaiseCallbackEvent 方法返回错误,则调用 ProcessCallBackError 客户端函数。
<%@ Page Language="C#" %> <%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> public int cbCount = 0; // Define method that processes the callbacks on server. public void RaiseCallbackEvent(String eventArgument) { cbCount = Convert.ToInt32(eventArgument) + 1; } // Define method that returns callback result. public string GetCallbackResult() { return cbCount.ToString(); } protected void Page_Load(object sender, EventArgs e) { // Define a StringBuilder to hold messages to output. StringBuilder sb = new StringBuilder(); // Check if this is a postback. sb.Append("No page postbacks have occurred."); if (Page.IsPostBack) { sb.Append("A page postback has occurred."); } // Write out any messages. MyLabel.Text = sb.ToString(); // Get a ClientScriptManager reference from the Page class. ClientScriptManager cs = Page.ClientScript; // Define one of the callback script's context. // The callback script will be defined in a script block on the page. StringBuilder context1 = new StringBuilder(); context1.Append("function ReceiveServerData1(arg, context)"); context1.Append("{"); context1.Append("Message1.innerText = arg;"); context1.Append("value1 = arg;"); context1.Append("}"); // Define callback references. String cbReference1 = cs.GetCallbackEventReference(this, "arg", "ReceiveServerData1", context1.ToString()); String cbReference2 = cs.GetCallbackEventReferenc ></asp:Label> </div> </form> </body> </html>e("'" + Page.UniqueID + "'", "arg", "ReceiveServerData2", "", "ProcessCallBackError", false); String callbackScript1 = "function CallTheServer1(arg, context) {" + cbReference1 + "; }"; String callbackScript2 = "function CallTheServer2(arg, context) {" + cbReference2 + "; }"; // Register script blocks will perform call to the server. cs.RegisterClientScriptBloc k(this.GetType(), "CallTheServer1", callbackScript1, true); cs.RegisterClientScriptBloc k(this.GetType(), "CallTheServer2", callbackScript2, true); } </script> <script type="text/javascript"> var value1 = 0; var value2 = 0; function ReceiveServerData2(arg, context) { Message2.innerText = arg; value2 = arg; } function ProcessCallBackError(arg, context) { Message2.innerText = 'An error has occurred.'; } </script> <html > <head id="Head1" runat="server"> <title>ClientScriptManager Example</title> </head> <body> <form id="Form1" runat="server"> <div> Callback 1 result: <span id="Message1">0</span> <br /> Callback 2 result: <span id="Message2">0</span> <br /> <br /> <input type="button" value="ClientCallBack1" onclick="CallTheServer1(value1, alert('Increment value'))"/> <input type="button" value="ClientCallBack2" onclick="CallTheServer2(value2, alert('Increment value'))"/> <br /> <br /> <asp:Label id="MyLabel" runat="server"