以下是说的有CS页的代码
大家都知道EXT.NET的控件有一个DirectEvents事件。下面我们就来说一下这个事件的具体用法。
最简单的用法就是在你的控件加上这样的代码 OnDirectClick="btnOK_DirectClick"。实际上是简化了DirectEvents事件的,完整的写法如下:
<DirectEvents>
<Click OnEvent="btnOK_DirectClick"></Click>
</DirectEvents>
有时候为了简便就可以像之前那样写。但是如果需要复杂的处理,比如回调函数,传入参数,弹出遮盖层等等就需要完整的写出来。后台代码:protected void btnLogin_Click(object sender, DirectEventArgs e){//填充你自己的代码}
有的时候处理的时间比较久,我们就需要弹出一个遮盖层来提高用户的体验度。
<DirectEvents>
<Click OnEvent="btnOK_DirectClick"></Click>
<EventMask ShowMask="true" Msg="正在处理..."></EventMask>
</DirectEvents>
当然我们有可能还需要传入参数
<DirectEvents>
<Click OnEvent="btnOK_DirectClick"></Click>
<EventMask ShowMask="true" Msg="正在处理..."></EventMask>
<ExtraParams>
<ext:Parameter Name="name"Value="#{tfName}.getValue()" Mode="Raw" />
<ext:Parameter Name="pass"Value="1" Mode="Value" />
</ExtraParams>
</DirectEvents>
上图,黄色是参数的名称(以便后台获取),紫红色的是动态获取某个控件的值;蓝色的固定的参数值。
后台获取:string name= e.ExtraParams["name"];
当我们执行了一些的操作后,有时候还需要一些JS操作,这样我们可以加一个回调函数:
<DirectEvents>
<Click OnEvent="btnOK_DirectClick" Success="fnSuccess"></Click>
<EventMask ShowMask="true" Msg="正在处理..."></EventMask>
<ExtraParams>
<ext:Parameter Name="name" Value="#{tfName}.getValue()" Mode="Raw" />
<ext:Parameter Name="pass" Value="1" Mode="Value" />
</ExtraParams>
</DirectEvents>
JS函数:
function fnSuccess(response, result) {
//填充你自己的代码
}
有的TX又回问,btnOK_DirectClick fnSuccess 这2个事件如何交互信息呢?别着急,看如下代码:
btnOK_DirectClick---------------e.Success = true;e.ExtraParamsResponse.Add(new Ext.Net.Parameter("data", "abc"));data为返回的参数名称,abc为返回参数的值。
fnSuccess----------------------result.extraParamsResponse.data;这样既可获取。
好了,经过以上我们大致知道 DirectEvents事件怎么回事,该怎么用了。多给大家分享一个,
<DirectEvents>
<Click OnEvent="btnOK_DirectClick" Success="fnSuccess"></Click>
<EventMask ShowMask="true" Msg="正在处理..."></EventMask>
<Confirmation ConfirmRequest="true" Title="提示" Message="确定要提交服务器吗?">
</Confirmation>
<ExtraParams>
<ext:Parameter Name="name" Value="#{tfName}.getValue()" Mode="Raw" />
<ext:Parameter Name="pass" Value="1" Mode="Value" />
</ExtraParams>
</DirectEvents>
这个就类似于弹出的对话框,是否确认。只需要这么简单的一句话,但是给用户的体验可是非常不错的哟。
好了,以上是有CS的代码,有的没有CS的肿么办呢?也不要着急哦,
<DirectEvents>
<Change OnEvent="UpLoadFiles" IsUpload="true" Before=" Ext.net.Mask.show({ msg: '处理中...' });"
Success="uploadSuccess(result)" Failure="uploadFailure(result)" />
</DirectEvents>
看到了吗?这就是纯JS的方法,里面具体方法比如参数的使用等等 和上面大同小异啦,这里就多做介绍了。
有的时候如果需要处理的时间等待很长的时候,只需要加一个Timeout="300000" 即可。刚刚我们也看到弹出遮盖层,是在处理之前,如果处理之前有其他事情要做的话还可以这样写哟<EventMask ShowMask="true" Msg="处理中..." /> 但是这个大家要记得自己写代码隐藏掉哦。
补充方法请参考:http://www.qeefee.com/article/extnet-learn-06-directevents-patch