频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

6.4使用JavaScript程序代码来显示与隐藏UpdateProgress控件

作者: 章立民研究室 出处:机械工业出版社  2008-05-06 10:52    砖    好    评论   进入论坛
阅读提示:《ASP.NET AJAX 经典范例168(VC#版)》第6章为您介绍的是别让用户干着急,善用UpdateProgress控件,本节主要讲述的是使用JavaScript程序代码来显示与隐藏UpdateProgress控件。

6.4使用JavaScript程序代码来显示与隐藏UpdateProgress控件

借助于PageRequestManager实例的beginRequest与endRequest事件,您可以编写JavaScript程序代码来控制一个UpdateProgress控件要在何时显示与隐藏。基本上,我们会在beginRequest事件处理函数中显示出代表UpdateProgress控件的DOM标记元素,并且在endRequest事件处理函数中隐藏该标记元素。

一般来说,在下列情况中,您必须编写JavaScript程序代码来显示与隐藏一个UpdateProgress控件:
?如果您使用UpdatePanel控件的Triggers属性将某一个位于UpdatePanel控件之外的控件注册为异步回送控件,当该控件引发异步回送时,您希望一个与UpdatePanel控件相关联的Update- Progress控件显示出来,并且在异步回送结束时,UpdateProgress控件要隐藏起来。 ?如果您使用ScriptManager控件的 RegisterAsyncPostBackControl (Control) 方法将某一个控件注册为异步回送控件,并且使用UpdatePanel控件的 Update() 方法来进行更新,在这种情况下,与被更新的UpdatePanel控件相关联的UpdateProgress控件无法自动判断异步回送何时会被触发并显示出来。此时,您就必须通过JavaScript程序代码来显示与隐藏UpdateProgress控件。

页面范例 - 异步的章节目录提取界面

图6-21与图6-22所示是页面范例CH6_DemoForm005.aspx的执行画面,从其中的执行流程可以看出,在用户选择某一本书籍并按下“取得章节目录”按钮之后,就会显示出UpdateProgress控件来告知用户操作正在进行中,在此期间,如果用户按下UpdateProgress控件中的“取消查询”按钮,异步查询操作将会被取消(如图6-21所示),然而如果用户静待查询完成,将会显示出用户所查询的书籍的章节目录(如图6-22所示)。

 
 

面范例CH6_DemoForm005.aspx最特别之处,就是在UpdateProgress控件中提供了一个“取消查询”按钮来让用户取消异步查询操作。相关设计技巧说明如下:


•如图6-23所示,名称为UpdatePanel1的UpdatePanel控件用来显示查询结果,而为了让位于UpdatePanel1之外的“取得章节目录”按钮能够引发异步回送并局部更新UpdatePanel1的内容,我们必须设定UpdatePanel1的Triggers属性,使得“取得章节目录”按钮的Click事件能够引发异步回送并局部更新UpdatePanel1的内容。

  

•从图6-23也可以看出,我们在页面中添加了一个UpdateProgress控件,并将其Assoicated- UpdatePanelID属性设定成UpdatePanel1以便与其相关联。


?请大家注意,我们加至UpdateProgress控件中的“取消查询”按钮是一个HTML Button控件(如图6-24所示),此外,从以下的HTML标记可以看出,我们已设定当按下此按钮时就会执行JavaScript函数CancelAsyncPostBack():

<asp:UpdateProgress ID="UpdateProgress1" runat="server"
AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
<table width="315" style="background-color: #ffffcc">
<tr valign="middle">
<td style="width: 26px">
<img src="Images/Loading1.gif" />
</td>
<td style="width: 279px">
正在取得章节目录中...请稍后
</td>
</tr>
<tr valign="middle">
<td style="width: 26px; text-align: center;">
<img src="Images/Loading5.gif" />
</td>
<td style="width: 279px">
<input id="btnCancel" type="button" value="取消查询"
onclick="CancelAsyncPostBack()" /> 
</td>
</tr>
</table>
</ProgressTemplate>
</asp:UpdateProgress>
 

•我想大家会有一个疑问,“取得章节目录”按钮位于UpdatePanel控件之外,为什么当此按钮被按下时,会显示出UpdateProgress控件呢?事实上就本范例而言,UpdateProgress控件的显示与隐藏完全通过以下的JavaScript程序代码来完成:
<script language="javascript" type="text/javascript">
// 取得 PageRequestManager 类的实例。
var prm = Sys.WebForms.PageRequestManager.getInstance();
// 当按下"取消查询"按钮就会执行这个 JavaScript 函数。
function CancelAsyncPostBack()
{
if (prm.get_isInAsyncPostBack())
{
// 调用 PageRequestManager 实例的 abortPostBack 方法来取消当前执行中的异步回送。
prm.abortPostBack();
}
}

// 设定当引发 initializeRequest 事件时就执行事件处理函数 InitializeRequest。
prm.add_initializeRequest(InitializeRequest);

// 设定当引发 endRequest 事件时就执行事件处理函数 EndRequest。
prm.add_endRequest(EndRequest);

// 声明一个变量来存放引发异步回送的控件的 id 。
var postBackElement;

function InitializeRequest(sender, args)
{
if (prm.get_isInAsyncPostBack())
{
args.set_cancel(true);
}

postBackElement = args.get_postBackElement();

// 如果是"取得章节目录"按钮引发异步回送,则将名称为 UpdateProgress1
// 的 UpdateProgress 控件显示出来。
if (postBackElement.id = 'btnGetBookDetail')
{
$get('UpdateProgress1').style.display = 'block';
}
}

function EndRequest(sender, args)
{
// 如果是"取得章节目录"按钮引发异步回送,则将名称为 UpdateProgress1
// 的 UpdateProgress 控件隐藏起来。
if (postBackElement.id = 'btnGetBookDetail')
{
$get('UpdateProgress1').style.display = 'none';
}
}
</script>
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节
专题
程序员如何成长?
ASP.NET 2.0基础开发指南
.NET移动与嵌入式技术专题
.NET Framework新手入门专题
VS.NET实用开发专题
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
全面解析35岁技术人的价值与出路
全面解析35岁技术人的价值与..
勇闯IT培训黑色围城
勇闯IT培训黑色围城
二手仿冒设备与思科再营销谁更火
二手仿冒设备与思科再营销谁..
· 二手仿冒设备与思科再..
· 汶川大地震 IT技术人为..
· 网络故障排除宝典
· 访问控制列表(ACL)介绍
· 视频访谈:网管员如何踏..
· 首届中国IT工程师生态..
· 华为路由器配置
· 企业数据恢复指南
· 龙芯要做中国的“奔腾”
· 2008年上半年全国软考..
· 交换机故障解决指南
· Vista SP1对决XP SP3
· LAMP技术精解
· 微软出价446亿美元收购..
· AIX操作系统管理应用(..
· 华为员工自杀频频拷问..
ARP攻击防范与解决方案
ARP攻击防范与解决方案
iSCSI应用与发展
iSCSI应用与发展
SQL Server 2008/2005全解
SQL Server 2008/2005全解
· SQL Server 2008/2005..
· SOA 面向服务架构
· SQL Server 2008/2005..
· iSCSI应用与发展
· RAID——磁盘阵列基础
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Apache技术专题
· 国际文档格式标准开战
· 路由器设置与口令恢复
· 打造安全服务器
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
· ADSL应用面面俱到
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
iSCSI应用与发展
iSCSI应用与发展
· iSCSI应用与发展
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· iSCSI应用与发展
· 三层交换技术专题
· Apache技术专题
· 企业数据恢复指南
· RAID——磁盘阵列基础
· 路由器设置与口令恢复
· SOA 面向服务架构
· ADSL应用面面俱到
· ADSL应用面面俱到
· 反垃圾邮件技术应用
· 访问控制列表(ACL)介绍