ASPxCallback主要是通过注册客户端事件服务器端事件来相互通信完成任务。
ASPxCallback控件为我们封装了大量的Ajax操作,使用起来非常的方便,如果页面中遇到需要局部刷的操作而又不想自动动手写ajax的话,使用它就是非常不错选择。
客户端向服务端发信息 例如c1.PerformCallback('信息');
服务端向客户端发信息 先在后台代码中定义一个JSProperties属性值
例如:ASPxComboBox2.JSProperties["cp_result"] = "abcd";
 
 如何使用ASPXCallback:

1.向页面添加ASPxCallBack组件,并设置ClientInstanceName属性(客户端标识,如 ClientInstanceName="Callback1")。

2•注册ASPxCallBack组件的服务器端事件ASPxCallback_Callback,这个方法就是客户端将要调用的服务器端的处理程序。
3•注册ASPxCallBack组件的CallbackComplete事件,该事件指的是是当回完成后事件,可用来处理回调完之后的操作,并可通过参数e获取parameter和设置返回的result的值。
4.在客户端用ASPxCallBack组件的客户端方法PerformCallback方法,以调用服务器端的ASPxCallback_Callback事件。
          代码:ASPxCallBack的客户端标识ClientInstanceName.PerformCallback(要刷新的客户端ID)
•CallBack组件自动调用CallbackComplete事件,完成此次操作。
 
一个简单的例子
1.拖个ASPxButton控件,AutoPostBack="False" .
    把DIV的ID设为time
2.拖该控件,把它的客户端标识属性ClientInstanceName设为c1
   设置 它的回传CallBack事件中 e.Result = DateTime.Now.ToString();
3。设置它的客户端事件CallbackComplete,意思:回传完成后的操作
function(s, e) {
           time.innerHTML =e.result;
}

4.自定义一个JS事件

PerformCallback(局部刷新ID)意思:执行回传

<script. type="text/javascript">
  function tt(s, e) 
       {
        c1.PerformCallback("time2");
    }    }

5.ASPxButton客户端事件

按钮使用JS中定义的事件

<dx:ASPxButton ID="ASPxButton1" runat="server" AutoPostBack="False" 
            Text="局部刷新" >
            <ClientSideEvents Click ="tt" />
        </dx:ASPxButton>
小结:c1.PerformCallback("test");意思:客户端标识为c1的ASPxCallback控件执行回传,回传客户端ID为test,这个需要JS。
它的客户端事件CallbackComplete,

function(s, e) {
           time.innerHTML =e.result;
}意思:回传事件完成后的操作,这里是把结果写到time里了
 
例子2.现在时间
<head runat="server">
    <title>无标题页</title>
    <script. language="JavaScript" type="text/javascript">
 setInterval("time()",1000);
function time() {
   c1.PerformCallback("t");
}
    </script>
</head>
<body>
    <form. id="form1" runat="server">
    <div id="t">
    </div>
    <div>
        <dx:ASPxCallback ID="ASPxCallback1" runat="server" ClientInstanceName="c1" nCallback="ASPxCallback1_Callback">
            <ClientSideEvents CallbackComplete="function(s, e) {
 t.innerHTML=e.result;
}" />
        </dx:ASPxCallback>
    </div>
    </form>
</body>
</html>
C#
protected void ASPxCallback1_Callback(object source, DevExpress.Web.ASPxCallback.CallbackEventArgs e)
    {
        e.Result = DateTime.Now.ToString();
    }
 

下面这个例子将说明如何通过客户端启用服务器端的方法来更新DIV中的数据。

HTML代码
三个DIV,每个DIV分别有一个<a/>标签,通过调用Javascript函数ShowDetails来更新DIV的内容,其中参数为Div ID的最后一个数字。ASPxCallback组件同时注册服务器的OnCallback事件,用来处理回调时处理,ClientSideEvents的 CallbackComplete方法当回调完成时将自动调用。
JS,通过Callback1.PerformCallback(id)调用服务器的OnCallback事件
[code]<script. type="text/javascript"><!--
        function GetDetailsContainer(id) {
            return document.getElementById("Detail" + id.toString());
        }
        function ShowDetails(id) {

GetDetailsContainer(id).innerHTML = "Loading…";
            Callback1.PerformCallback(id);  //回调方法,将调用服务器端注册的Callback方法。
        }
  
//--></script>[/code]
[b]aspx:[/b]
[code]<div id="Detail1">
        <a href="javascript.:ShowDetails('1');">Show Detail</a>
    </div>
    <div id="Detail2">
        <a href="javascript.:ShowDetails('2');">Show Detail</a>
    </div>
    <div id="Detail3">
        <a href="javascript.:ShowDetails('3');">Show Detail</a>
    </div>
    
    <dxcb:ASPxCallback ID="ASPxCallback1" runat="server" ClientInstanceName="Callback1"
        nCallback="ASPxCallback1_Callback">
        <ClientSideEvents CallbackComplete="function(s, e) {
        var element = GetDetailsContainer(e.parameter);
        element.innerHTML = e.result;
    }" />
    </dxcb:ASPxCallback>
    
<!--
-------------------------------------------------
CallbackComplete 方法原型:  
function ASPxClientCallbackCompleteEventHandler( 
  source : object,  
  e : ASPxClientCallbackCompleteEventArgs 
) : Void;
parameter:获取AspxCallBack进行回调的参数值。 
result:获取回调之后的结果值。

这个方法会在回调完成之后自动的调用。
------------------------------------------------
-->[/code]
C#,在OnCallback事件中接受客户端传递过来的参数,以进行判断是更新的哪一个DIV,并通过e.Result返回处理后的结果:
[code]protected void ASPxCallback1_Callback(object source, CallbackEventArgs e)
    {
        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;
        }
    }[/code]
最后,Aspx系列控件的所有的客户端回调都是通过这种模块完成的,如设置Aspx的ClientInstanceName属性,添加注册Aspx服务器端的Callback方法,在客户端调用Aspx的PerformCallback()方法等。这种模式在以后的使用过程中会经常的见到。 function forumhottag_callback(data){ tags = data; }</SCRIPT. type="text/javascript." </SCRIPT. type="text/javascript." parsetag();</SCRIPT.

devexpress控件之ASPxCallback的更多相关文章

  1. DevExpress控件的GridControl控件小结

    DevExpress控件的GridControl控件小结 (由于开始使用DevExpress控件了,所以要点滴的记录一下) 1.DevExpress控件组中的GridControl控件不能使横向滚动条 ...

  2. DevExpress控件安装、汉化使用教程

    前言 DevExpress是一个庞大的控件库,也很是好用(没用过,听说),但是要收费. 网上关于DevExpress的教程满天飞,我找了一下午也没找到正确的安装.简单实用教程,还是自己摸索吧. 自己动 ...

  3. 在Winform开发框架中,利用DevExpress控件实现数据的快速录入和选择

    在实际的项目开发过程中,有好的控件或者功能模块,我都是想办法尽可能集成到我的WInform开发框架中,这样后面开发项目起来,就可以节省很多研究时间,并能重复使用,非常高效方便.在我很早之前的一篇博客& ...

  4. DevExpress控件使用经验总结- GridView列表行号显示操作

    DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.本文主要介绍我在使用DevExpress控件过程中,遇到或者发现的一些问题解决方案,或者也可以所示一 ...

  5. DevExpress控件开发常用要点(项目总结版)

    使用DevExpress控件来做项目开发已经有很长一段时间了,在摸索开发到客户苛刻要求的过程中,其中碰到过很多问题需要解决的,随着一个个问题的解决,也留下很多对DevExpress控件的使用经验及教训 ...

  6. DevExpress控件-- Gridcontrol合并表头

    写在前面的话: 在园子里逛了有一段时间了,一直想写点东西,但苦于自己的水平有限,生怕写出来的东西浪费了读者的时间.楼主有幸参加了公司DevExpress控件的培训,独乐乐不如众乐乐,特附上Demo以飨 ...

  7. DevExpress控件-GridControl根据条件改变单元格/行颜色--转载

    DevExpress控件-数据控件GridControl,有时我们需要根据特定条件改变符合条件的行或者单元格颜色达到突出显示目的,现在动起鼠标跟我一起操作吧,对的,要达到这个目的您甚至都不用动键盘. ...

  8. 【转】DevExpress控件安装

    原文链接: DevExpress控件安装.汉化使用教程 - 田园里的蟋蟀 学习网址: 1.DevExpress控件中文网 2.DevExpress控件中文网使用教程 3.DevExpress控件使用经 ...

  9. DevExpress控件使用之RichEditControl的使用

    原文:DevExpress控件使用之RichEditControl的使用 做Winform的,我们一般都知道,传统.NET界面有一个RichTextBox控件,这个是一个富文本控件,可以存储图片文字等 ...

随机推荐

  1. 在O(n) 时间复杂度,O(1)空间复杂度内反转单链表

    在LeetCode中看到判断回文的程序:https://leetcode.com/problems/palindrome-linked-list/ 里面用单链表来存储数据,先反转前半部分的单链表,然后 ...

  2. springboot(七)邮件服务

    简单使用 发送邮件应该是网站的必备功能之一,什么注册验证,忘记密码或者是给用户发送营销信息.最早期的时候我们会使用JavaMail相关api来写发送邮件的相关代码,后来spring退出了JavaMai ...

  3. 19. SpringBoot_web开发-使用外部Servlet容器&JSP支持

    還沒有web.xml,生  配置tomcat 嵌入式Servlet容器:应用打成可执行的jar 优点:简单.便携: 缺点:默认不支持JSP.优化定制比较复杂 使用定制器[ServerPropertie ...

  4. OracleHelper与SqlServerHelper

    1.OracleHelper using System; using System.Data; using System.Configuration; using System.Linq; using ...

  5. centos7 网卡命名

    CentOS6 及之前以太网网卡进行顺序命名的:多网卡如:eth0,eth1 依次.Centos7 则不同,命名规则默认是基于固件.拓扑.位置信息来分配.一.网卡命名的策略systemd对网络设备的命 ...

  6. OOM之类、对象、实例、实体之辨析

    一.场景再现         有一个重要的概念你需要弄明白,那就是“类(class)”和“对象(object)”的区别.我用禅语来解释一下吧:         鱼和三文鱼有什么区别?         ...

  7. Java基础中的一些概念理解

    同步 和 异步区别 同步和异步通常用来形容一次方法的调用. 同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为.而异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用 ...

  8. 2018-2019-2 网络对抗技术 20165230 Exp4 恶意代码分析

    目录 1.实验内容 2.实验过程 任务一:系统运行监控 每隔五分钟记录自己的电脑,并进行分析 安装配置sysinternals里的sysmon工具 任务二:恶意软件分析 静态分析工具 ViruScan ...

  9. oracle新建对象 权限管理

    代码 CREATE USER target IDENTIFIED BY target ; GRANT CONNECT, RESOURCE TO target; 刚刚创建的oracle实例中会内建两个用 ...

  10. 【API】检查进程是否存在 - CreateToolhelp32Snapshot

    1 学习目标 今天静态逆向mydocument病毒时,看到病毒代码为了防止自身被调试会先检测杀毒软件和调试工具的进程是否存在.如果没有杀毒软件则释放真正的病毒文件,提前熟悉一下枚举进程的反汇编代码. ...