在ASP.NET控件上面使用DirectEvents

我们在ASP.NET中实现无刷新的页面请求的时候,通常会用到UpdatePanel,现在Ext.Net为我们提供了另外一种渠道:通过DirectEvents来实现无刷新的页面请求。

  1. <asp:Label runat="server">名称</asp:Label>
  2. <asp:TextBox runat="server" ID="txtName" />
  3. <asp:Button runat="server" ID="btnOK" Text="确定" />

首先,我在页面放上一个文本框和按钮,当我们点击确定按钮的时候,希望在后台能够取到文本框的值。

接下来才是见证奇迹的时刻:

  1. <ext:ResourceManager runat="server">
  2. <CustomDirectEvents>
  3. <

ext:DirectEvent Target

  1. ="btnOK"
  2. OnEvent="btnOK_DirectClick">
  3. </

ext:DirectEvent

  1. >
  2. </CustomDirectEvents>
  3. </ext:ResourceManager>

我们来配置一个DirectEvent,通过这个DirectEvent来执行服务器端的事件方法,我们来看看服务器端的代码:

  1. protected void btnOK_DirectClick(object sender, Ext.Net.DirectEventArgs e)
  2. {
  3. string name = this.txtName.Text;
  4. X.MessageBox.Alert("提示", "按钮被点击,输入框的值为:" + name).Show();
  5. }

通过这段代码,我们会取到文本框输入的值,并在客户端弹出一个提示框,并且这个过程是无刷新的。效果如图:

在HTML控件上面使用DirectEvents

ASP.NET控件可以用,HTML控件同样可以使用DirectEvents(真的是万能哦)。来看看如何在HTML按钮中使用DirectEvents吧,为了演示,我在页面中添加一个HTML按钮:

  1. <input type="button" value="HTML按钮" id="htmlBtn" />

然后再ResourceManager节点中配置:

  1. <ext:ResourceManager runat="server">
  2. <CustomDirectEvents>
  3. <ext:DirectEvent Target="htmlBtn"
  4. OnEvent="btnOK_DirectClick">
  5. </ext:DirectEvent>
  6. </CustomDirectEvents>
  7. </ext:ResourceManager>

这样就完成了。当我们点击这个HTML按钮的时候,你会看到和上面一样的效果。

DirectEvents调用WebService

DirectEvents除了可以异步执行页面中的事件,还可以远程调用WebService。

  1. [WebService(Namespace = "http://tempuri.org/")]
  2. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  3. [System.ComponentModel.ToolboxItem(false)]
  4. // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
  5. // [System.Web.Script.Services.ScriptService]
  6. public class ExtNetService : System.Web.Services.WebService
  7. {
  8. [WebMethod]
  9. public DirectResponse GetServerTimeWindow()
  10. {
  11. new Window("Server time", Icon.Time)
  12. {
  13. ID = "MyWindow",
  14. Html = DateTime.Now.ToString()
  15. }.Render();
  16. return new DirectResponse();
  17. }
  18. }

这是我们定义的Service程序,然后来配置DirectEvents:

  1. <ext:ResourceManager runat="server">
  2. <CustomDirectEvents>
  3. <ext:DirectEvent Target="htmlBtn"
  4. Url="ExtNetService.asmx/GetServerTimeWindow"
  5. Method="POST"
  6. Type="Load">
  7. </ext:DirectEvent>
  8. </CustomDirectEvents>
  9. </ext:ResourceManager>

然后点击htmlBtn按钮,这个时候会打开一个来自服务器端的小窗口:

注意这个例子,如果你去跟踪一下请求过程,你会发现这里其实是远程的调用了这个WebService,这里和一般的URL请求是一样的,因此DirectEvents一样可以调用一般处理程序(.ashx)

DirectEvents调用一般处理程序(.ashx)

既然可以远程调用一个WebService,那么远程调用一个一般处理程序肯定是没有问题的。

首先来看看一般处理程序的代码:

  1. public class ServerTimeHandler : IHttpHandler
  2. {
  3. public void ProcessRequest(HttpContext context)
  4. {
  5. new Window("Server time", Icon.Time)
  6. {
  7. ID = "MyWindow",
  8. Html = DateTime.Now.ToString()
  9. }.Render();
  10.  
  11. new DirectResponse().Return();
  12. }
  13.  
  14. public bool IsReusable
  15. {
  16. get
  17. {
  18. return false;
  19. }
  20. }
  21. }

然后,我们修改一下DirectEvents配置,将刚才的WebService链接调整一下,其他的不动:

  1. <ext:ResourceManager runat="server">
  2. <CustomDirectEvents>
  3. <ext:DirectEvent Target="htmlBtn"
  4. Url="ServerTimeHandler.ashx"
  5. Method="POST"
  6. Type="Load">
  7. </ext:DirectEvent>
  8. </CustomDirectEvents>
  9. </ext:ResourceManager>

运行程序以后,你会看到与调用WebService一样的效果。

DirectEvents动态生成Ext.Net控件

刚才在演示调用WebService和一般处理程序的时候,已经看到了如何生成Ext.Net控件,再看一下代码:

  1. new Window("Server time", Icon.Time)
  2. {
  3. ID = "MyWindow",
  4. Html = DateTime.Now.ToString()
  5. }.Render();
  6. return new DirectResponse();

注意,如果要Window显示出来,就必须调用Render方法。

DirectEvents更新ASP.NET控件

我们知道UpdatePanel的更新过程:首先向服务器发送一个异步请求,然后服务器进行重绘,将控件重新生成HTML代码,并返回给客户端,最后,由UpdatePanel客户端JS决定如何替换,达到更新页面的效果。

那么,通过DirectEvents一样可以更新ASP.NET控件。

我们回到第一个例子,通过点击按钮来得到文本框的值。我们在例子中已经完成了取值的过程,接下来我们希望为文本框赋值:

  1. protected void btnOK_DirectClick(object sender, Ext.Net.DirectEventArgs e)
  2. {
  3. //string name = this.txtName.Text;
  4. //X.MessageBox.Alert("提示", "按钮被点击,输入框的值为:" + name).Show();

this.txtName.Text = "www.qeefee.com"

  1. ;
  2. }

这里是标准的赋值方式,如果在ASP.NET UpdatePanel中肯定可以完成我们想要的功能,但是在Ext.Net中并不行的,不信你可以试试……反正我是试过了。

那么如何来更新ASP.NET控件呢?我来告诉你答案:

  1. protected void btnOK_DirectClick(object sender, Ext.Net.DirectEventArgs e)
  2. {
  3. //string name = this.txtName.Text;
  4. //X.MessageBox.Alert("提示", "按钮被点击,输入框的值为:" + name).Show();
  5.  
  6. this.txtName.Text = "www.qeefee.com";
  7. this.txtName.Update();
  8. }

看到了吧,除了赋值以外,我们还要显示的调用Update方法。

需要说明一下,这个Update方法是Ext.Net中的静态方法,要用它的时候你必须添加Ext.Net的引用。

太复杂的控制我没有试过,希望以后有机会尝试吧。希望这篇文章能够帮到大家……别忘了,这是起飞网原创首发哦

Ext.Net学习笔记06: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. 【Ext.Net学习笔记】06:Ext.Net GridPanel的用法(GridPanel 折叠/展开行、GridPanel Selection、 可编辑的GridPanel)

    GridPanel 折叠/展开行 Ext.Net GridPanel的行支持折叠/展开功能,这个功能个人觉得还说很有用处的,尤其是数据中包含图片等内容的时候. 下面来看看效果: 使用行折叠/展开功能之 ...

  3. 【Ext.Net学习笔记】04:Ext.Net中使用数据、Ext.Net Store的用法、Ext.Net ComboBox用法

    之前的几篇文章都是介绍Ext.Net较为基础的东西,今天的这一篇将介绍数据的一些用法,包括XTemplate绑定数据.Store(Modal.Proxy).ComboBox的用法等. XTemplat ...

  4. 【Ext.Net学习笔记】02:Ext.Net用法概览、Ext.Net MessageBus用法、Ext.Net布局

    Ext.Net用法概览 Ext.Net还是很强大,如果运用熟练可以极大的提高编程效率.如果你也要学习Ext.Net,原文博主推荐书籍:<Ext.Net Web 应用程序开发教程>,是英文的 ...

  5. Ext.Net学习笔记23:Ext.Net TabPanel用法详解

    Ext.Net学习笔记23:Ext.Net TabPanel用法详解 上面的图片中给出了TabPanel的一个效果图,我们来看一下代码: <ext:TabPanel runat="se ...

  6. 【Ext.Net学习笔记】05:Ext.Net GridPanel的用法(包含Filter、Sorter、Grouping、汇总(Summary)的用法)

    GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: <ext:GridPanel runat="server&qu ...

  7. 【Ext.Net学习笔记】01:在ASP.NET WebForm中使用Ext.Net

    Ext.NET是基于跨浏览器的ExtJS库和.NET Framework的一套支持ASP.NET AJAX的开源Web控件,包含有丰富的Ajax运用,其前身是Coolite. 下载地址:http:// ...

  8. Ext JS4 学习笔记之发送表单(Form)时也将表单下的表格(Grid)数据一同发送的方法

    Ext JS4 学习笔记之发送表单(Form)时也将表单下的表格(Grid)数据一同发送的方法 昨天在开发的时候遇到个小问题,就是如何将Grid的内容与Form一起发送到服务器端.默认情况下,表单(F ...

  9. Ext.Net学习笔记22:Ext.Net Tree 用法详解

    Ext.Net学习笔记22:Ext.Net Tree 用法详解 上面的图片是一个简单的树,使用Ext.Net来创建这样的树结构非常简单,代码如下: <ext:TreePanel runat=&q ...

随机推荐

  1. 2015年10月15日学习html基础笔记

    一个互联网公司的分工,小公司要求全能,拿一个项目全部做出来.大公司分工明细,主要步奏为策划人员策划方案,美工人员设计图有.psd.rp等,前端人员做静态页面,后台人员获取数据java php .net ...

  2. 【JS】Beginner1:Making Stuff Happen

    1.JS(JavaScript) is for interactivity 2.How does JS relate to HTML&CSS? script tag script elemen ...

  3. office文件密码破解方法及软件

    今天会用到3个软件 1.Office Password Remover 说明:这个软件可以很快破解.doc   .xls的密码 使用方法:参考百度经验里面的文章http://jingyan.baidu ...

  4. 【Java基础】Java IO流的总结

    Java IO流分为输入流和输出流,而输入流和输出流中又分字符流和字节流.顾名思义,输入流则是输入到程序中计算,输出流是把程序的结果输出到文件或者设备.而字符流输入输出以字符为单位,字节流则是以字节为 ...

  5. 微软云平台windows azure入门系列八课程

    微软云平台windows azure入门系列八课程: Windows Azure入门教学系列 (一): 创建第一个WebRole程序与部署 Windows Azure入门教学系列 (二): 创建第一个 ...

  6. algorithm@ dijkstra algorithm & prim algorithm

    #include<iostream> #include<cstdio> #include<cstring> #include<limits> #incl ...

  7. Configuring Active Directory Federation Services 2.0 (配置 adfs 2.0) -摘自网络

    Active Directory Federation Services (AD FS) 2.0 makes it possible to deploy a federation server and ...

  8. php&mysql

    更新语句 $query='update num set num='.$counter.'where id=1';      ....................这个查询失败 $query='upd ...

  9. javascript-智能社-JS基础A笔记

    JavaScript基础A JavaScript组成 ECMA : 全称ECMAScript,解释器.计算机语言的翻译 DOM:全称Document Object Model,赋予了JS操作HTML的 ...

  10. linux 查看并终止进程

    1,查看port被那个进程占用 比如: netstat -anp | grep 1160 ps:查看port1169被那个进程占用. 2.查找进程 比如 :ps -ef | grep 'tomcat' ...