Ext.Net的事件处理
Ext.Net中的事件分为客户端事件和服务器端事件,客户端事件需要页面中JS来处理,服务器端事件则会无刷新的提交给服务器,在服务器处理完成并将结果显示在页面中。
拿我们上面窗口中的保存按钮为例,我们来介绍一下如何处理客户端事件。
客户端事件处理
首先,我们来添加一个客户端的单击事件:
<ext:Button runat="server" ID="btnSave" Icon="DatabaseSave" Text="保存"> <Listeners> <Click Handler="Ext.MessageBox.alert('提示', '保存按钮被单击')" /> </Listeners> </ext:Button>
跟ExtJS中的写法一样,使用listeners来添加事件。当我们在Listeners标签中输入左尖括号以后,visual studio 会提示我们所有可用的事件:
Handler 属性保存一段JS代码,如果要添加一个处理方法,则需要使用Fn属性:
<ext:Button runat="server" ID="btnSave" Icon="DatabaseSave" Text="保存"> <Listeners> <Click Fn="fnSave" /> </Listeners> </ext:Button>
注意,使用Fn属性的时候,需要确保我们的页面中已经定义了fnSave方法:
function fnSave() { //此处添加保存的处理逻辑 Ext.MessageBox.alert('提示', '保存按钮被单击') }
此处只使用了click事件,完整是事件列表可以参考ExtJS API文档。
服务器端事件处理
既然使用了Ext.Net服务器控件,恐怕大家更希望使用服务器端事件吧。Ext.Net服务器事件需要在DirectEvents中定义,它是Ext.Net独有的。DirectEvents将被回发到服务器进行处理,并将处理结果展示在页面中(如果有更新页面的话)。
来看一下DirectEvents
<ext:Button runat="server" ID="btnSave" Icon="DatabaseSave" Text="保存"> <DirectEvents> <Click OnEvent="btnSave_DirectClick"></Click> </DirectEvents> </ext:Button>
对应的服务器处理方法如下:
protected void btnSave_DirectClick(object sender, DirectEventArgs e) { X.MessageBox.Alert("提示", "保存按钮被单击").Show(); }
如果我们需要在执行服务器端处理的时候显示遮罩层,可以在Click中添加配置节点:
<ext:Button runat="server" ID="btnSave" Icon="DatabaseSave" Text="保存"> <DirectEvents> <Click OnEvent="btnSave_DirectClick"> <EventMask ShowMask="true" Msg="正在加载..." /> </Click> </DirectEvents> </ext:Button>
另外,Ext.Net Direct Events还可以传递自定义参数:
<ext:Button runat="server" ID="btnSave" Icon="DatabaseSave" Text="保存"> <DirectEvents> <Click OnEvent="btnSave_DirectClick"> <ExtraParams> <ext:Parameter Name="param1" Value="自定义参数值" /> </ExtraParams> <EventMask ShowMask="true" Msg="正在加载..." /> </Click> </DirectEvents> </ext:Button>
在服务器端的处理方法中,我们可以轻易的获取到这个参数值:
protected void btnSave_DirectClick(object sender, DirectEventArgs e) { string param1 = e.ExtraParams["param1"]; X.MessageBox.Alert("提示", "保存按钮被单击,传入的参数值:" + param1).Show(); }
Ext.Net中的DirectEvents所支持的事件类型同样可以参考ExtJS的API文档。