AJax技术

ASP.NET AJAX:UpdatePanel提示和技巧(3)

字号+ 作者:H5之家 来源:H5之家 2015-09-24 08:06 我要评论( )

目录 更新突出显示 取消 UpdatePanel 更新 多个 UpdatePanel 不使用 UpdatePanel 更新 Web Service != SOAP 和 XML 不论好坏,UpdatePanel 控件都是 ASP.NET AJ

请注意,已更新的 UpdatePanel 的可见性可以通过切换打开和关闭来创建闪光效果。除了与 DOM 元 素直接交互以外,代码还会封装代表具有 Sys.UI.Control 对象的 UpdatePanel 的 DOM 元素。然后, 它使用 Sys.UI.Control 的 set_visible 和 get_visible 方法来切换可见性:

_panels[i].set_visible(!_panels[i].get_visible());

Sys.UI.Control 是在 Microsoft AJAX Library 中,具体而言是在 MicrosoftAjax.js 中找到的 JavaScript 类。以这种方式切换可见性的好处是,这是独立于浏览器的。这项操作在支持 ASP.NET AJAX 的每种浏览器(几乎就是所有的现代浏览器)中同样有效。另一方面,与浏览器 DOM 直接交互的 JavaScript 代码必须予以调整,以便在不同的浏览器类型中使用。

取消 UpdatePanel 更新

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。这样可以通过减少呈现的控件的数量来减轻 服务器的负载,而且它还减少了响应中的数据量,因为不进行更新的 UpdatePanel 不会将任何数据添加 到响应中。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • JQuery实现Ajax加载图片的方法

    JQuery实现Ajax加载图片的方法

    2016-02-24 17:01

  • 判断用户是不是为ajax请求

    判断用户是不是为ajax请求

    2016-02-24 17:00

  • Ajax与WEB开发 by alixixi.com

    Ajax与WEB开发 by alixixi.com

    2016-02-11 11:02

  • jQuery.ajax()的相关参数及使用

    jQuery.ajax()的相关参数及使用

    2016-02-08 16:00

网友点评