浅谈UpdatePanel

      这是我以前刚学习asp.net ajax的时候总结的,如果有什么错误的地方,请大家指出,以便我能早日改正。

 

    1.  作用:   UpdatePanel控件用来控制页面的局部更新,这些更新依赖于ScriptManagerEnablePartialRendering属性,如果此属性设为false,则局部更新将失去作用。

   2.基本结构: 

Code

   3.主要属性:

名称

意义

ChildrenAsTriggers

表示内容模板内的子控件的回发是否更新本模板。

UpdateMode

表示内容模板的更新模式,一般分为AlwaysConditional.

RenderMode

表示局部更新控件的呈现形式,一般有两种:BlockInline,当呈现模式选择Block时,局部更新控件在客户端以div形式展现;否则以span展现。

ContentTemplateContainer

使用编程手法添加UpdatePanel内容。

     4. 子元素:

名称

意义

ContentTemplate

是局部更新控件的内容模板,可以在其中添加任意控件。

Triggers

局部更新的触发器。包括两种触发器:一种是异步回发AsyncPostBackTrigger,可以实现局部更新;另一种PostBackTrigger和普通页面的回发一样,不管是否使用了局部更新控件,都会引起页面的全部更新。

     5.主要说下UpdateMode的两个属性值:

          1)     Always:默认值。表示UpdatePanel控件在每次回发时都会更新,这包含其它的UpdatePanel控件或此UpdatePanel控件以外的控件引起的回发。当UpdateMode属性设为Always时,此时不允许使用ChildrenAsTriggers属性,如果强行使用,页面运行时会出现错误。

          2)     ConditionalUpdatePanel控件在满足下列条件之一时引起回发:

                                   i.          引起回发的是UpdatePanel的触发器或子控件。

                                 ii.          显示的调用UpdatePanelupdate()方法。

                               iii.          当此UpdatePanel位于另一个UpdatePanel中,而上级的UpdatePanel更新时。

          3)     当同时设置UpdateModeConditionalChildrenAsTriggers=false时,不允许UpdatePanel的子控件更新模板内容。

 

     6. ContentTemplateContainer属性:如果想使用编程方法设置UpdatePanel的内容,需要创建一个UpdatePanel,并且添加内容到它的ContentTemplateContainer属性,而不能直接添加控件到它的ContentTemplate。如果想直接设置ContentTemplate,则需要写一个自定义的Template,并去实现位于System.Web.UI命名空间下的接口ITemplate

Code

     

     7.  触发器:

1)       普通回调触发器PostBackTrigger:主要针对UpdatePanel模板内的子控件,因为当子控件被触发时,它只会更新模板内的数据,而模板外的数据并不发生变化。有些情况下需要更新全部的内容,这时就可以通过此触发器来实现页面的全面回调。

2)   异步回调触发器AsyncPostBackTrigger:是实现局部更新的关键触发器。   在触发器内定义引起回发的控件和事件。ControlID属性指的是引起回发的控件ID;EventName属性指的是引起回发的控件事件。

 

8.     用编程的方法控制UpdatePanel的更新(此时的UpdateModeconditional

1)     实现:可以通过ScriptManagerRegisterAsyncPostBackControl()方法注册一个异步提交控件,并且调用UpdatePanelUpdate()方法进行更新。

2)     适用于:

       i.          提交的控件位于UpdatePanel外,而它所要更新的控件位于UpdatePanel里。此时提交,刷新整个页面。

   ii.          提交的控件与所要刷新的控件位于两个不同并且没有关系的UpdatePanel中。此时提交,无反应。

 3)  示例:Label控件显示当前时间,Button刷新Label的显示时间

 

Code

 

 

9.     UpdatePanel嵌套:

1)     UpdatePanel可以嵌套使用,即在一个UpdatePanelContentTemplate中还可以放入一个或多个UpdatePanel控件。

2)     外层UpdatePanel更新时,它的子UpdatePanel都随着更新。

3)     里层的UpdatrePanel更新时:如果外层UpdatePanelUpdateMode属性为Always时,内外层全部更新;如果UpdateMode属性为conditional,则只更新里层的UpdatePanel,外层的不随着更新。

 

10.     母版页更新内容页的UpdatePanel:提交控件位于母版页中,而被更新的控件位于内容页的UpdatePanel中。利用ContentPlaceHolderFindControl()方法,找到内容页的UpdatePanel,然后再使用Update()方法. 

Code

 

  注意:此时的UpdatePanelUpdateMode方法必须为conditional,否则程序报错。

 

 

你可能感兴趣的:(update)