背景:
阅读新闻

callback笔记

  作者: 今日评论: [字体: ]

public string GetCallbackEventReference (
 Control control, 处理客户端回调的服务器 Control。该控件必须实现 ICallbackEventHandler 接口并提供 RaiseCallbackEvent 方法。
 string argument, 从客户端脚本传递给服务器端的一个参数、RaiseCallbackEvent 方法。
 string clientCallback, 一个客户端事件处理程序的名称,该处理程序接收成功的服务器端事件的结果。即服务器端GetCallbackResult方法返回给客户端JS所在的方法。用户定义在<script>块中的JavaScript回调(callback)函数名。回调(callback)执行后,此函数最终负责页面的更新。
 string context 上下文对象,客户端回调的客户端函数(即该方法的返回值函数)返回给clientCallback的一个参数.
 string clientErrorCallback,客户端事件处理程序的名称,该处理程序在服务器端事件处理程序出现错误时接收结果。
 bool useAsync true 表示同步执行回调;false 表示异步执行回调。

)

返回值
调用客户端回调的客户端函数的名称。


GetCallbackEventReference函数将产生如下的脚本调用:
WebForm_DoCallback(pageID, input, UpdateEmployeeViewHandler, null, null);


客户端JS需要2个函数
一是出发改回调的激发函数,即GetCallbackEventReference的返回值
二是处理服务器端所返回的结果数据,并对当前client页面进行更新的函数.即上述函数参数中的clientCallback


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="SRS.Web.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>

    <script type="text/javascript">
        function DoCallBack(arg, evt, context) {
            WebForm_DoCallback("__Page", arg, evt, context, null, false);
        }

        function btnCallback(arg, context) {
            DoCallBack(arg, this.callbackEvent, context);
        }

        function callbackEvent(arg, context) {
            alert(arg + context);
        }
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input type="button" value="Callback" onclick="btnCallback(1, 'Message')" />
    </div>
    </form>
</body>
</html>


    public partial class WebForm1 : System.Web.UI.Page, ICallbackEventHandler
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Page.ClientScript.GetCallbackEventReference(this, "", "", "");
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write("");
        }
        void ICallbackEventHandler.RaiseCallbackEvent(String eventArgument)
        {
            eventArgument = "i have changed~";
        }
        string ICallbackEventHandler.GetCallbackResult()
        {
            return "Data from server...";
        }
    }

 

例子2

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<html>
<head runat="server">
    <title>无标题页</title>
    <script language="javascript">
    function JS_OnClickFunc(a)
    {
        document.getElementById("txtNow").value = a;
    }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:TextBox ID="txtNow" runat="server" ></asp:TextBox>
    </div>
    </form>
</body>
</html>


public partial class _Default : System.Web.UI.Page , ICallbackEventHandler
{
    private string callbackResult = string.Empty;
    private string s = string.Empty;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ClientScriptManager csManager = Page.ClientScript;
            string callbackMethod = csManager.GetCallbackEventReference(this, "document.getElementById('txtNow').value", "JS_OnClickFunc", "this.value");
            txtNow.Attributes.Add("OnClick", callbackMethod);
        }
    }

    ICallbackEventHandler 成员#region ICallbackEventHandler 成员

    public string GetCallbackResult()
    {
        return callbackResult;
    }

    public void RaiseCallbackEvent(string eventArgument)
    {
        callbackResult = eventArgument + System.DateTime.Now.ToString();
    }

    #endregion
}

来源:
录入日期:[2009-11-4 9:52:00]
收藏 推荐 打印 | 录入:mikebai | 阅读:
文章评论      
正在加载评论列表...
评论表单加载中...