说明:对Atlas系列文章的翻译将以先前制定的翻译顺序进行,为了保持原文的味道,翻译过程中尽量保证不做删节。为了保证可读性和连贯性,文中对一些词汇的翻译作了英文注释,由于能力有限,在翻译和学习过程中可能有疏漏和不当之处,还望大家多多指点。总体来说这部分翻译的文章只是一个介绍和概括性的,更详细的部分请参考请他园子里讲解atlas的文章。

原文地址:这里
翻译:范维肖

UpdatePanel Class
作用:将一个页面分成多个区域,每个区域都可以在不重新刷新整个页面的前提下更新其内容(局部回发)
语法
Public Class UpdatePanel:Control
备注
当页面的一部分在回发后需要改变时,通常整个页面都需要刷新,UpdatePanel解决了这个问题,通过UpdatePanel我们可以使用部分更新(patial update)通过更多的频繁多回发来减少屏幕的闪烁(整个页面刷新时会造成screen flicker),同时可以使得您创建更具有交互能力的web应用程序。

当您在开发一个asp.net页时使用部分更新(partial rendering)时,这个页面看起来和普通的没有什么区别。不同之处在于这个页面里包含了一个ScriptManager控件,它用作管理部分更新。这使得页面上的各个UpdatePanel可以独立工作,互不影响。当然,您也可以把UpdatePanel控件放到User Control里或者Master里去用。

当使用部分更新(partial-rendering)时,控件能执行原始的整页回发(regular postback)或使用单独的UpdatePanel的异步回发(asynchronous poskback),如果允许异步回发,将控件放如UpdatePanel里就能使用这个功能了。所有在UpdatePanel以外的控件都将导致整页回发,但是这里有几个例外情况:
1.    像TimerControl这样的没有用户界面的组件。
2.    注册到ScriptManager.RegisterAsyncPostBackControl方法的控件
3.    被连接到UpdatePanel的触发器(triggers)的控件
这三种情况下的控件始终进行部分回发。

为了使得页面的某些部分可以更新,您需要把ScriptManager控件加入到您的页面并且设置它的partialRedering属性为true。然后使用UpdatePanel控件把页面分成可以独立更新的区域,同时指定一个引起这些区域刷新的触发条件。更新区域的内容可以在UpdatePanel中的ContentTemplate里描述。

当页面第一次被加载(render)时,UpdatePanel控件的内容被渲染并且发送到客户端。当回发被触发时,每个UpdatePanel的Mode属性指明了这个UpdatePanel是总是被回发还是在触发器控制下回发。当Mode被设置为Always的时候,这个UpdatePanel将会在任何一次回发触发时回发,当Mode被设置为Conditional的时候,这个UpdatePanel只会在下面的情况发生时回发:
1.    当连接到这个UpdatePanel的触发器(trigger)触发时
2.    当您强制调用Update方法时

Triggers集合的内容指定了可以引起UpdatePanel回发的事件。您可以使用ControlValueTrigger对象使得当一个控件的值改变时回发,同时您还可以使用ControlEventTrigger对象使得当一个控件的特定事件被触发时引起回发。

RenderMode属性有两个值,分别为Inline和Block,他们会分别将这个UpdatePanel渲染成<span>和<div>标记。

IsUpdating属性是只读的,bool类型,用来判断UpdatePanel是否作为异步回发的一部分正在更新。它为true的条件是:
1.在部分回发模式下当前请求正在被执行
2.当一个客户端触发器被触发
3.Update方法被执行


在服务器端,异步回发所引起的页面生命周期时间和普通的回发是一样的,只不过UpdatePanel里的内容需要被更新而被送到了浏览器而已。

注意
1.不能把文件上传控件放入UpdatePanel里,因为数据的传输与部分页面更新相冲突。
2.ContentTemplate被定义为一个单实例模板(single instance template)

UpdatePanel的声明语法:
 1 <atlas:UpdatePanel
 2     ID="string"
 3     Mode="Always|Conditional"
 4     RenderMode="Block|Inline"
 5     runat="server"
 6 >
 7     <ContentTemplate>
 8         <!-- UpdatePanel content -->
 9     </ContentTemplate>
10     <Triggers>
11         <ControlValueTrigger
12             ControlID="string"
13             PropertyName="string"
14         />
15         <ControlEventTrigger
16             ControlID="string"
17             EventName="string"
18         />
19     </Triggers>
20 </atlas:UpdatePanel>

附加:UpdatePanel如果放入User Control或MasterPage里的话,一定要注意ScriptManager的问题。此外,UpdatePanel的嵌套问题要注意Mode的设置和在读取IsUpdating属性时的取值问题。
posted on 2006-04-16 19:34  维生素C.NET  阅读(1168)  评论(0编辑  收藏  举报