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. 解决NO migrations to apply

    创建表之后,遇到models模型变动,故当时做了删除应用文件夹下migrations文件,删除后重建,但重建后执行模型合并操作结果为No Changes,无法创建数据表 执行python3 manag ...

  2. Python的虚拟环境virtualenv

    原文地址:blog.sina.com.cn/s/blog_4ddef8f80101eu0w.html Python的虚拟环境可以使一个Python程序拥有独立的库library和解释器interpre ...

  3. SpringMVC——SpringMVC简介

    Spring web mvc 和Struts2 都属于表现层的框架,它是Spring 框架的一部分,我们可以从Spring 的整体结构中看得出来:

  4. 【windows核心编程】系统消息与自定义钩子(Hook)使用

    一.HOOk Hook是程序设计中最为灵活多变的技巧之一,在windows下,Hook有两种含义: 1.系统提供的消息Hook机制 2.自定义的Hook编程技巧 其中,由系统提供的消息钩子机制是由一系 ...

  5. windows安装anaconda 报错failed to create anacoda menu ?

    windows安装anaconda 报错failed to create anacoda menu ? 装了无数次,每次都是 failed to create anacoda menu然后无选择忽略, ...

  6. MySQL 误操作后数据恢复(update,delete忘加where条件)【转】

    在数据库日常维护中,开发人员是最让人头痛的,很多时候都会由于SQL语句 写的有问题导致服务器出问题,导致资源耗尽.最危险的操作就是在做DML操作的时候忘加where条件,导致全表更新,这是作为运维或者 ...

  7. linux命令 dirname

    功能: 获取给定路径的目录部分 利用man 查看dirname的说明如下: DESCRIPTION        Output each NAME with its last non-slash co ...

  8. mongodb数据库集群及sharding分片配置

    复制集群的配置 1.安装mongodb数据库 在主节点和从节点上都安装mongodb # rpm -ivh mongo-10gen-2.4.6-mongodb_1.x86_64.rpm mongo-1 ...

  9. 解决vmware虚拟机克隆后启动centos报错device eth0 does not seem to be present, delaying initialization

    centos启动报错: device eth0 does not seem to be present, delaying initialization ifcfg-eth0的配置文件里保存了以前的M ...

  10. 通达OA系统myisam转innodb引擎

    OA系统切换到linux环境后,性能提升了2-3倍左右,随着公司的发展壮大,办公人员也会越来越多,当人数达到一定数量级别时如1500在线人数已无法支撑公司业务,就需要对系统进行性能提升优化. 当前OA ...