快速业务通道

ASP.NET AJAX:UpdatePanel控件

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-13

pageLoaded 事件是 UpdatePanel 返回服务器更新其内容时,PageRequestManager 类激发的若干事件之一。PageRequestManager 激发的另一个重要事件是 initializeRequest,它在发生异步回调之前激发。

最近有人问我,是否有可能在运行时决定是否允许 AsyncPostBackTrigger 触发一个 UpdatePanel 更新。回答是肯定的。这个操作通过处理 initializeRequest 事件来完成。

传递到 initializeRequest 处理程序的第二个参数是 initializeRequestEventArgs 类型的一个对象。这个对象包含 get_postBackElement 方法,它可以识别触发更新的按钮或其他元素。它还有一个您可用来在回调发生之前将其取消的 set_cancel 方法。下面是使用中的 set_cancel 方法的示例:

<script type=”text/javascript”>

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(initializeRequest);

function initializeRequest(sender, args)
{
    args.set_cancel(!confirm(‘Are you sure?’));
}
</script>

在这个示例中,intializeRequest 处理程序可以在回调执行之前弹出一个确认框,询问用户是否要继续更新。单击确认框中的“Cancel”(取消)可以将 true 传递给 set_cancel,这样可以停止执行回调。在现实生活中,您可能觉得没必要在允许继续更新之前提示用户确认,但如果要是能够根据应用程序中其他地方的条件取消更新,它就可能很有用。

顺便说一下,它还有可能在异步回调执行后但又尚未完成前取消它们。PageRequestManager 提供了 abortPostBack 方法来执行此操作;它还提供了 get_isInAsyncPostBack 方法来确定异步回调是否挂起。这些方法通常与 UpdateProgress 控件一起使用,以便显示取消 UI。

多个 UpdatePanel

一个页面可以承载几个 UpdatePanel。默认情况下,当一个页面上的 UpdatePanel 更新时,该页面的其他 UpdatePanel 也会更新。有时候这是您想要的,但多半您并不需要每个 UpdatePanel 更新来响应其他 UpdatePanel。
通过将页面上每个 UpdatePanel 控件的 UpdateMode 属性设置为 Conditional,您可以选择更新哪个 UpdatePanel 实例(及更新的时间)。然后,在 UpdatePanel 更新和调用服务端事件处理程序的时候,请调用您要更新的其他面板上的 UpdatePanel.Update。这样可以通过减少呈现的控件的数量来减轻服务器的负载,而且它还减少了响应中的数据量,因为不进行更新的 Upda

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号