现在的位置: 首页 > 综合 > 正文

js 调用后台方法 ICallbackEventHandler 接口实现局部刷新实例 ClientScript的GetCallbackEventReference方法实现局部刷新

2018年02月11日 ⁄ 综合 ⁄ 共 3863字 ⁄ 字号 评论关闭

ICallbackEventHandler:接口系统。 Web.UI.ICallbackEventHandler
用于指示控制可以在服务器上的回调事件的目标。

获取一个对客户端函数的引用;调用该函数时,将启动一个对服务器端事件的客户端回调。
ClientScriptManager.GetCallbackEventReference (Control, String(argument),  String(clientCallback), String(context))

参数描述
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.

js 代码

<script type="text/javascript" language="javascript">
    function validate(obj) {
        //ClientScript的GetCallbackEventReference方法实现局部刷新
        <%= ClientScript.GetCallbackEventReference(this, "'Data:'+$(obj).val()", "clientCallback", null)%>
    }
    function clientCallback(result,content){
        eval(result);
        if(callbackResult.returnvalue=="OK")
        {        
            return true;
        }
        else{
            return false;
        }
    }
</script>

后台代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Test
{
    public partial class WebForm1 : System.Web.UI.Page, ICallbackEventHandler
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public string CallbackResult;

        //返回以控件为目标的回调事件的结果。
        //
        //返回:
        //结果的回调。
        public string GetCallbackResult()
        {
            // throw new NotImplementedException();
            return CallbackResult;
        }

        //处理以控件为目标的回调事件。
        //
        //参数:
        // eventArgument:
        //一个字符串,表示事件参数传递给事件处理程序。
        public void RaiseCallbackEvent(string eventArgument)
        {
            //throw new NotImplementedException();
            if(eventArgument.Contains("Data"))
            {
                string arg = eventArgument.Split(':')[1].ToString();
                string returnValue = "";
                if (arg == "OK")
                {
                    returnValue = "OK";
                }
                CallbackResult = "CallbackResult={returnValue:'" + returnValue + "'}";
            }
        }
    }
}

抱歉!评论已关闭.