Ext.Net通过DirectEvents进行服务器端异步的事件处理。我们在 Ext.Net用法概览 这篇中已经简单的介绍了DirectEvents,今天我们将详细的介绍一下DirectEvents。

DirectEvents异步执行服务器端事件

我们首先来看一下Ext.Net DirectEvents的一个最简单用法,通过点击按钮触发服务器端的事件处理方法,并在前台弹出一个提示框。

  1. <ext:Window runat="server" ID="win1"
  2. Title="Ext.Net DirectEvents"
  3. Width="300" Height="200">
  4. <Buttons>
  5. <ext:Button runat="server" ID="btnOK"
  6. Text="确定" Icon="Accept"
  7. OnDirectClick="btnOK_DirectClick">
  8. </ext:Button>
  9. </Buttons>
  10. </ext:Window>

这里添加了OnDirectEvents事件,它的一个简写方式,完整的写法如下:

  1. <ext:Button runat="server" ID="btnOK"
  2. Text="确定" Icon="Accept">
  3. <DirectEvents

> <Click OnEvent="btnOK_DirectClick"></Click> </DirectEvents

  1. >
  2. </ext:Button>

事件处理方法如下:

  1. protected void btnOK_DirectClick(object sender, Ext.Net.DirectEventArgs e)
  2. {
  3. X.MessageBox.Alert("提示", "按钮被点击").Show();
  4. }

编译代码并刷新页面,点击按钮,我们会看到如下效果:

显示Mask遮罩层

上面的代码已经演示了如何使用DirectEvents执行服务器端的事件,DirectEvents是通过异步方式执行服务器端代码的,那么,我们通常会希望在执行的时候客户端显示一个遮罩层,阻止用户进行其他操作,这点Ext.Net已经为我们想到了。

  1. <ext:Button runat="server" ID="btnOK"
  2. Text="确定" Icon="Accept">
  3. <DirectEvents>
  4. <Click OnEvent="btnOK_DirectClick">
  5. <

EventMask ShowMask="true" Msg="正在处理..."></EventMask

  1. >
  2. </Click>
  3. </DirectEvents>
  4. </ext:Button>

然后我们在服务器端事件处理方法中让程序休息一下:

  1. protected void btnOK_DirectClick(object sender, Ext.Net.DirectEventArgs e)
  2. {
  3. System.Threading.Thread.Sleep(3000);
  4.  
  5. X.MessageBox.Alert("提示", "按钮被点击").Show();
  6. }

这样当我们再点击按钮的时候,会看到如下效果:

为事件添加自定义参数

Ext.Net DirectEvents 还允许我们为事件添加自定义参数。

  1. <ext:Button runat="server" ID="btnOK"
  2. Text="确定" Icon="Accept">
  3. <DirectEvents>
  4. <Click OnEvent="btnOK_DirectClick">
  5. <EventMask ShowMask="true" Msg="正在处理..."></EventMask>
  6. <ExtraParams

> <ext:Parameter Name="name" Value="btnOK"></ext:Parameter> </ExtraParams

  1. >
  2. </Click>
  3. </DirectEvents>
  4. </ext:Button>

在这里,我们将传给处理方法一个名称为name的参数,看一下服务器端的处理:

  1. protected void btnOK_DirectClick(object sender, Ext.Net.DirectEventArgs e)
  2. {
  3. System.Threading.Thread.Sleep(3000);

string btnName = e.ExtraParams["name"

  1. ];
  2. X.MessageBox.Alert("提示", btnName + "被点击").Show();
  3. }

在服务器端,我们通过e.ExtraParams来访问这些参数。

处理服务器返回的数据

Ext.Net DirectEvents 可以通过添加一个客户端回调方法来处理服务器返回的数据。

  1. <ext:Button runat="server" ID="btnOK"
  2. Text="确定" Icon="Accept">
  3. <DirectEvents>
  4. <Click OnEvent="btnOK_DirectClick" Success="fnSuccess">
  5. <EventMask ShowMask="true" Msg="正在处理..."></EventMask>
  6. <ExtraParams>
  7. <ext:Parameter Name="name" Value="btnOK"></ext:Parameter>
  8. </ExtraParams>
  9. </Click>
  10. </DirectEvents>
  11. </ext:Button>

在配置中添加一个success配置,表示在执行成功以后调用fnSuccess方法,fnSuccess方法的定义如下:

  1. function fnSuccess(response, result) {
  2. alert(result.extraParamsResponse.data);
  3. }

接下来看看服务器端如何返回数据的:

  1. protected void btnOK_DirectClick(object sender, Ext.Net.DirectEventArgs e)
  2. {
  3. //System.Threading.Thread.Sleep(3000);
  4.  
  5. //string btnName = e.ExtraParams["name"];
  6. //X.MessageBox.Alert("提示", btnName + "被点击").Show();
  7.  
  8. e.ExtraParamsResponse.Add(new Ext.Net.Parameter("data", "abc"));
  9. }

通过这样的处理,我们就可以从服务器返回数据,并在客户端通过js代码进行处理了。

confirmation配置

confirmation配置是用来在触发事件之前进行提示,有用户决定是否提交服务器进行处理的。

它的用法很简单,却很实用。

  1. <ext:Button runat="server" ID="btnOK"
  2. Text="确定" Icon="Accept">
  3. <DirectEvents>
  4. <Click OnEvent="btnOK_DirectClick" Success="fnSuccess">
  5. <EventMask ShowMask="true" Msg="正在处理..."></EventMask>
  6. <ExtraParams>
  7. <ext:Parameter Name="name" Value="btnOK"></ext:Parameter>
  8. </ExtraParams>
  9. <

Confirmation ConfirmRequest

  1. ="true"

Title="提示" Message

  1. ="确定要提交服务器吗?">
  2. </Confirmation>
  3. </Click>
  4. </DirectEvents>
  5. </ext:Button>

Ext.Net学习笔记05:Ext.Net DirectEvents用法详解的更多相关文章

  1. 【Ext.Net学习笔记】03:Ext.Net DirectEvents用法详解、DirectMethods用法详解

    Ext.Net通过DirectEvents进行服务器端异步的事件处理.[Ext.Net学习笔记]02:Ext.Net用法概览.Ext.Net MessageBus用法.Ext.Net布局 中已经简单的 ...

  2. Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]

     Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...

  3. (转)live555学习笔记10-h264 RTP传输详解(2)

    参考: 1,live555学习笔记10-h264 RTP传输详解(2) http://blog.csdn.net/niu_gao/article/details/6936108 2,H264 sps ...

  4. 学习笔记--Grunt、安装、图文详解

    学习笔记--Git安装.图文详解 安装Git成功后,现在安装Gruntjs,官网:http://gruntjs.com/ 一.安装node 参考node.js 安装.图文详解 (最新的node会自动安 ...

  5. SNMP学习笔记之SNMP 原理与实战详解

    原文地址:http://freeloda.blog.51cto.com/2033581/1306743 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法 ...

  6. JQuery学习笔记系列(一)----选择器详解

    笔者好长时间没有更新过博客园的笔记了,一部分原因是去年刚刚开始工作一段时间忙碌的加班,体会了一种每天加班到凌晨的充实感,之后闲暇时间了也因为自己懒惰没有坚持记笔记的习惯,现在重新拾起来. 借用古人的一 ...

  7. 【Java学习笔记之三十四】超详解Java多线程基础

    前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的 ...

  8. HTML5学习笔记(九):选择器详解

    在前面的笔记中我们已经接触过几种常见的选择器,本笔记我们将深入了解CSS的选择器. 元素选择器 最常见的 CSS 选择器是元素选择器.换句话说,文档的元素就是最基本的选择器.在 W3C 标准中,元素选 ...

  9. iOS5 ARC学习笔记:strong、weak等详解

    2013-03-25 13:41 佚名 oschina 字号:T | T iOS5中加入了新知识,就是ARC,其实我并不是很喜欢它,因为习惯了自己管理内存.但是学习还是很有必要的.现在我们看看iOS5 ...

随机推荐

  1. 配置Memcache服务器并实现主从复制功能(repcached)(转)

    1.repcached介绍repcached 是日本人开发的实现memcached复制功能,它是一个单 master单 slave的方案,但它的 master/slave都是可读写的,而且可以相互同步 ...

  2. C(n,k)在n个不重复数中获得k个数

    //比如在数组a[]={1,7,89,87} 中k=2的时候 组合为 C(4,2)=6 package 再次开始; import java.util.ArrayList; //本次实现的是在n个不重复 ...

  3. x&-x

    x&-x的值是啥米呢?列入10 二进制位 1010为2  1011则为 1,1000为8,就是一个整数对应的二进制数中1所在最低位的权值. 在树状数组中很有用

  4. shell截取字符串方法

    shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法.${parameter:-word}${parameter:=word}${parameter:?word}${p ...

  5. 获取所有组合算法、获取全排列算法(java)

    转载声明:原文转自:http://www.cnblogs.com/xiezie/p/5574516.html 受到ACM1015的影响,个人感觉,有必要对统计学上的 全组合和全排列 进行一个简单的总结 ...

  6. CF_402C Searching for Graph 乱搞题

    题目链接:http://codeforces.com/problemset/problem/402/C /**算法分析: 乱搞题,不明白题目想考什么 */ #include<bits/stdc+ ...

  7. POJ2923--Relocation(01背包+状压dp)

    果然对状压DP,我根本就不懂=.= /************************************************** Problem: 2923 User: G_lory Mem ...

  8. mongoDB中的连接池(转载)

    一.mongoDB中的连接池 刚上手MongoDB,在做应用时,受以前使用关系型数据库的影响,会考虑数据库连接池的问题! 关系型数据库中,我们做连接池无非就是事先建立好N个连接(connection) ...

  9. php数组相加 两个数组键名相同 后者不能覆盖前者

    array(“a”)+array(“b”)结果还是array(“a”) array(“a”)+array(“b”)的结果是 array(“a”) 因为,它们等效于array(“0″=>”a”)+ ...

  10. MapKit框架使用

    MapKit框架使用 一.地图的基本使用 1.简介 MapKit:用于地图展示,例如大头针/路线/覆盖层展示等(着重界面展示) 使用步骤: 导入主头文件 MapKit/MapKit.h MapKit有 ...