ASPxCallback组件(珍藏版)

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>

<!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 GetDetailsContainer(id) {
            return document.getElementById("Detail" + id.toString());
        }
        function ShowDetails(id) {  

            GetDetailsContainer(id).innerHTML = "Loading…";
            Callback1.PerformCallback(id);  //回调方法,将调用服务器端注册的Callback方法。
            //1:表示第一个div (服务器端:e.Parameter = 1)
            //2:表示第二个div (服务器端:e.Parameter = 2)
            //3:表示第三个div (服务器端:e.Parameter = 3)

        }
        
        /*
        -------------------------------------
        Callback1.PerformCallback(parameter);
        PerformCallback方法会调用Callback1服务器端的ASPxCallback1_Callback()方法,以完成和服务器
        端的通信。所以在服务器端一定要注册ASPxCallback1_Callback方法,以完成指定的操作。
        同时,PerformCallback()中的参数可有可无,类型为string,当有参数时,服务器端可通过ASPxCallback1_Callback()
        中的 ( CallbackEventArgs e) e.Parameter来获得,并通过e.Result参数返回结果值。
        此时,就可以通过执行Client端的CallbackComplete方法来获取执行的方法。
        
        总结:
        1 向页面添加CallBack组件,并设置ClientInstanceName属性(客户端标识,如 ClientInstanceName="Callback1")。
        2 注册CallBack组件的服务器端事件ASPxCallback_Callback。
        3 注册CallBack组件的CallbackComplete事件,用来处理回调完之后的操作,并可通过参数e获取parameter和result的值。
        4 在客户端用户CallBack组件的客户端方法PerformCallback方法,以调用服务器端的ASPxCallback_Callback事件。
          代码:Callback1.PerformCallback(id)
        5 CallBack组件自动调用CallbackComplete事件,完成此次操作。
        */
        </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
   <div id="Detail1">
        <a href="javascript:ShowDetails('1');" >Show Detail 1</a>
        <br />
    </div>
    <div id="Detail2">
        <a href="javascript:ShowDetails('2');">Show Detail 2</a>
        <br />
    </div>
    <div id="Detail3">
        <a href="javascript:ShowDetails('3');">Show Detail 3</a>
        <br />
    </div>
     
        <dx:ASPxCallback ID="ASPxCallback1" runat="server" 
            ClientInstanceName="Callback1" oncallback="ASPxCallback1_Callback">
            <ClientSideEvents CallbackComplete="function(s, e) {
     var element = GetDetailsContainer(e.parameter);
        element.innerHTML = e.result;

}" />
        </dx:ASPxCallback>
    
    
<!--
-------------------------------------------------
 CallbackComplete 方法原型:   
function ASPxClientCallbackCompleteEventHandler( 
   source : object,  
   e : ASPxClientCallbackCompleteEventArgs 
) : Void;
parameter:获取AspxCallBack进行回调的参数值。 
result:获取回调之后的结果值。

这个方法会在回调完成之后自动的调用。
------------------------------------------------
-->
    
    </div>
    </form>
</body>
</html>

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

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

    }

    protected void ASPxCallback1_Callback(object source, DevExpress.Web.CallbackEventArgs e)
    {
        //休息3秒,表示服务器在工作中
        System.Threading.Thread.Sleep(3000);

        switch (e.Parameter)
        {
            case "1":
                e.Result = "WCF分布式开发步步为赢(1):WCF分布式框架基础概念";
                break;
            case "2":
                e.Result = "WCF分布式开发步步为赢(2)自定义托管宿主WCF解决方案开发配置过程详解";
                break;
            case "3":
                e.Result = "WCF分布式开发步步为赢(3)WCF服务元数据交换、配置及编程开发";
                break;
        }

    }
}
原文地址:https://www.cnblogs.com/qqhfeng/p/10282777.html