Ext.Net学习笔记06:Ext.Net DirectEvents用方补充
在ASP.NET控件上面使用DirectEvents
我们在ASP.NET中实现无刷新的页面请求的时候,通常会用到UpdatePanel,现在Ext.Net为我们提供了另外一种渠道:通过DirectEvents来实现无刷新的页面请求。
<asp:Label runat="server">名称</asp:Label>
<asp:TextBox runat="server" ID="txtName" />
<asp:Button runat="server" ID="btnOK" Text="确定" />
首先,我在页面放上一个文本框和按钮,当我们点击确定按钮的时候,希望在后台能够取到文本框的值。
接下来才是见证奇迹的时刻:
<ext:ResourceManager runat="server">
<CustomDirectEvents>
<
ext:DirectEvent Target
="btnOK"
OnEvent="btnOK_DirectClick">
</
ext:DirectEvent
>
</CustomDirectEvents>
</ext:ResourceManager>
我们来配置一个DirectEvent,通过这个DirectEvent来执行服务器端的事件方法,我们来看看服务器端的代码:
protected void btnOK_DirectClick(object sender, Ext.Net.DirectEventArgs e)
{
string name = this.txtName.Text;
X.MessageBox.Alert("提示", "按钮被点击,输入框的值为:" + name).Show();
}
通过这段代码,我们会取到文本框输入的值,并在客户端弹出一个提示框,并且这个过程是无刷新的。效果如图:

在HTML控件上面使用DirectEvents
ASP.NET控件可以用,HTML控件同样可以使用DirectEvents(真的是万能哦)。来看看如何在HTML按钮中使用DirectEvents吧,为了演示,我在页面中添加一个HTML按钮:
<input type="button" value="HTML按钮" id="htmlBtn" />
然后再ResourceManager节点中配置:
<ext:ResourceManager runat="server">
<CustomDirectEvents>
<ext:DirectEvent Target="htmlBtn"
OnEvent="btnOK_DirectClick">
</ext:DirectEvent>
</CustomDirectEvents>
</ext:ResourceManager>
这样就完成了。当我们点击这个HTML按钮的时候,你会看到和上面一样的效果。
DirectEvents调用WebService
DirectEvents除了可以异步执行页面中的事件,还可以远程调用WebService。
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
// [System.Web.Script.Services.ScriptService]
public class ExtNetService : System.Web.Services.WebService
{
[WebMethod]
public DirectResponse GetServerTimeWindow()
{
new Window("Server time", Icon.Time)
{
ID = "MyWindow",
Html = DateTime.Now.ToString()
}.Render();
return new DirectResponse();
}
}
这是我们定义的Service程序,然后来配置DirectEvents:
<ext:ResourceManager runat="server">
<CustomDirectEvents>
<ext:DirectEvent Target="htmlBtn"
Url="ExtNetService.asmx/GetServerTimeWindow"
Method="POST"
Type="Load">
</ext:DirectEvent>
</CustomDirectEvents>
</ext:ResourceManager>
然后点击htmlBtn按钮,这个时候会打开一个来自服务器端的小窗口:

注意这个例子,如果你去跟踪一下请求过程,你会发现这里其实是远程的调用了这个WebService,这里和一般的URL请求是一样的,因此DirectEvents一样可以调用一般处理程序(.ashx)
DirectEvents调用一般处理程序(.ashx)
既然可以远程调用一个WebService,那么远程调用一个一般处理程序肯定是没有问题的。
首先来看看一般处理程序的代码:
public class ServerTimeHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
new Window("Server time", Icon.Time)
{
ID = "MyWindow",
Html = DateTime.Now.ToString()
}.Render(); new DirectResponse().Return();
} public bool IsReusable
{
get
{
return false;
}
}
}
然后,我们修改一下DirectEvents配置,将刚才的WebService链接调整一下,其他的不动:
<ext:ResourceManager runat="server">
<CustomDirectEvents>
<ext:DirectEvent Target="htmlBtn"
Url="ServerTimeHandler.ashx"
Method="POST"
Type="Load">
</ext:DirectEvent>
</CustomDirectEvents>
</ext:ResourceManager>
运行程序以后,你会看到与调用WebService一样的效果。
DirectEvents动态生成Ext.Net控件
刚才在演示调用WebService和一般处理程序的时候,已经看到了如何生成Ext.Net控件,再看一下代码:
new Window("Server time", Icon.Time)
{
ID = "MyWindow",
Html = DateTime.Now.ToString()
}.Render();
return new DirectResponse();
注意,如果要Window显示出来,就必须调用Render方法。
DirectEvents更新ASP.NET控件
我们知道UpdatePanel的更新过程:首先向服务器发送一个异步请求,然后服务器进行重绘,将控件重新生成HTML代码,并返回给客户端,最后,由UpdatePanel客户端JS决定如何替换,达到更新页面的效果。
那么,通过DirectEvents一样可以更新ASP.NET控件。
我们回到第一个例子,通过点击按钮来得到文本框的值。我们在例子中已经完成了取值的过程,接下来我们希望为文本框赋值:
protected void btnOK_DirectClick(object sender, Ext.Net.DirectEventArgs e)
{
//string name = this.txtName.Text;
//X.MessageBox.Alert("提示", "按钮被点击,输入框的值为:" + name).Show();
this.txtName.Text = "www.qeefee.com"
;
}
这里是标准的赋值方式,如果在ASP.NET UpdatePanel中肯定可以完成我们想要的功能,但是在Ext.Net中并不行的,不信你可以试试……反正我是试过了。
那么如何来更新ASP.NET控件呢?我来告诉你答案:
protected void btnOK_DirectClick(object sender, Ext.Net.DirectEventArgs e)
{
//string name = this.txtName.Text;
//X.MessageBox.Alert("提示", "按钮被点击,输入框的值为:" + name).Show(); this.txtName.Text = "www.qeefee.com";
this.txtName.Update();
}
看到了吧,除了赋值以外,我们还要显示的调用Update方法。
需要说明一下,这个Update方法是Ext.Net中的静态方法,要用它的时候你必须添加Ext.Net的引用。
太复杂的控制我没有试过,希望以后有机会尝试吧。希望这篇文章能够帮到大家……别忘了,这是起飞网原创首发哦
Ext.Net学习笔记06:Ext.Net DirectEvents用方补充的更多相关文章
- 【Ext.Net学习笔记】03:Ext.Net DirectEvents用法详解、DirectMethods用法详解
Ext.Net通过DirectEvents进行服务器端异步的事件处理.[Ext.Net学习笔记]02:Ext.Net用法概览.Ext.Net MessageBus用法.Ext.Net布局 中已经简单的 ...
- 【Ext.Net学习笔记】06:Ext.Net GridPanel的用法(GridPanel 折叠/展开行、GridPanel Selection、 可编辑的GridPanel)
GridPanel 折叠/展开行 Ext.Net GridPanel的行支持折叠/展开功能,这个功能个人觉得还说很有用处的,尤其是数据中包含图片等内容的时候. 下面来看看效果: 使用行折叠/展开功能之 ...
- 【Ext.Net学习笔记】04:Ext.Net中使用数据、Ext.Net Store的用法、Ext.Net ComboBox用法
之前的几篇文章都是介绍Ext.Net较为基础的东西,今天的这一篇将介绍数据的一些用法,包括XTemplate绑定数据.Store(Modal.Proxy).ComboBox的用法等. XTemplat ...
- 【Ext.Net学习笔记】02:Ext.Net用法概览、Ext.Net MessageBus用法、Ext.Net布局
Ext.Net用法概览 Ext.Net还是很强大,如果运用熟练可以极大的提高编程效率.如果你也要学习Ext.Net,原文博主推荐书籍:<Ext.Net Web 应用程序开发教程>,是英文的 ...
- Ext.Net学习笔记23:Ext.Net TabPanel用法详解
Ext.Net学习笔记23:Ext.Net TabPanel用法详解 上面的图片中给出了TabPanel的一个效果图,我们来看一下代码: <ext:TabPanel runat="se ...
- 【Ext.Net学习笔记】05:Ext.Net GridPanel的用法(包含Filter、Sorter、Grouping、汇总(Summary)的用法)
GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: <ext:GridPanel runat="server&qu ...
- 【Ext.Net学习笔记】01:在ASP.NET WebForm中使用Ext.Net
Ext.NET是基于跨浏览器的ExtJS库和.NET Framework的一套支持ASP.NET AJAX的开源Web控件,包含有丰富的Ajax运用,其前身是Coolite. 下载地址:http:// ...
- Ext JS4 学习笔记之发送表单(Form)时也将表单下的表格(Grid)数据一同发送的方法
Ext JS4 学习笔记之发送表单(Form)时也将表单下的表格(Grid)数据一同发送的方法 昨天在开发的时候遇到个小问题,就是如何将Grid的内容与Form一起发送到服务器端.默认情况下,表单(F ...
- Ext.Net学习笔记22:Ext.Net Tree 用法详解
Ext.Net学习笔记22:Ext.Net Tree 用法详解 上面的图片是一个简单的树,使用Ext.Net来创建这样的树结构非常简单,代码如下: <ext:TreePanel runat=&q ...
随机推荐
- normalization归一化
简单的举个例子:一张表有两个变量,一个是体重kg,一个是身高cm.假设一般情况下体重这个变量均值为60(kg),身高均值为170(cm).1,这两个变量对应的单位不一样,同样是100,对于身高来说很矮 ...
- Hadoop系列(一)hadoop2.2.0源码编译
操作系统:Centos 所需条件:能上网 编译所需工具: apache-ant-1.9.2-bin.tar.gz apache-maven-3.0.5-bin.tar.gz findbugs-2.0. ...
- linux select 与 阻塞( blocking ) 及非阻塞 (non blocking)实现io多路复用的示例
除了自己实现之外,还有个c语言写的基于事件的开源网络库:libevent http://www.cnblogs.com/Anker/p/3265058.html 最简单的select示例: #incl ...
- 一个疑难bug的解决过程
一个crontab脚本,下载一个文件并把内容入mysql数据库.具体流程如下: 1, wget一个文件. 2,处理文件生成一个中间文件. 3,将中间文件load入库. 05 10 * * * /hom ...
- iOS开发:创建真机调试证书
关于苹果iOS开发,笔者也是从小白过来的,经历过各种困难和坑,其中就有关于开发证书,生产证书,in_house证书,add_Hoc证书申请过程中的问题,以及上架发布问题.今天就着重说一下关于针对于苹果 ...
- 【三支火把】---队列和栈的C程序实现
这几天总结了C语言的队列,栈的实现方法,在此总结一下:一.栈 首先从栈开始,诚然,相信学习过数据结构的你,肯定应该知道栈是什么东西了,如果不知道也没事每一句话我就可以帮你总结--数据只在栈顶进行插入和 ...
- 换种眼光看Spring之bean是怎么诞生的(一)
Java的世界里处处存在了对象,有时候换一种眼光往往会给自己带来与之前大不一样的理解. 一个对象的出现离不开字节码,拿classforname来讲,classforname("...&quo ...
- Default route and zero route
A default route of a computer that is participating in computer networking is the packet forwarding ...
- Linux 释放cached内存
使用free -m 查看系统使用的内存情况: # free -m total used free shared buffers ...
- Android开发之IPC进程间通信-AIDL介绍及实例解析
一.IPC进程间通信 IPC是进程间通信方法的统称,Linux IPC包括以下方法,Android的进程间通信主要采用是哪些方法呢? 1. 管道(Pipe)及有名管道(named pipe):管道可用 ...